반응형 IT/Java394 CountDownLatch (다른 쓰레드 대기) 이전 포스팅에서 Thread 간에 동시성 이슈에 대해 다룬 글이 있다. 자세한 내용은 참고 포스팅 참고 바란다. Thread 를 생성해서 사용할때 별도의 쓰레드 공간을 만들어서 사용하기 위해서는 아래 참고포스팅에있는 threadLocal을 사용하는 방식도 있지만 CountDownLatch 를 사용하는 방법도 있다. 예시 코드로 바로 설명하면 private CountDownLatch countDownLatch = new CountDownLatch(5); private Thread1 thread1; private Thread2 thread2; @GetMapping("/threadtest") public void threadStart() { thread1 = new Thread1(); thread1.start.. 2023. 10. 13. ThreadLocal (동시성문제) 사용법 및 주의사항 이전 포스팅에서 Thread 사용법에 대해서 다룬적이 있다.자세한 내용은 아래 참고 포스팅 참고 바란다. 하지만 대량 트래픽이 존재하는 서비스에서 매번 발생하는 문제.바로 동시성 이슈 이다. 자바 Spring에서는 기본으로 Bean을 singleton으로 띄우게 된다.singleton 에 대한 자세한 내용은 아래 참고 포스팅 참고 바란다. 테스트를 할 경우에는 하나의 요청이 들어오니 상관이 없지만 동시에 여러 요청이 들어올 경우에 하나의 bean에 여러 값을 동시에 입력을 하면 출력은 다른 값이 나오는 이슈가 생길수 있다. 아래 그림을 보면하나의 클라이언트가 하나의 bean에 입력을 하면 정상적으로 입력한 값이 bean에 저장되고 그 값을 가져올수 있다.하지만 아래 그림과 상황이 같다면프로세스 순서는 앞.. 2023. 10. 12. try-catch 예외처리 비용 try-catch에 대해서는 이전 포스팅에서 다룬적이있다. 자세한 내용은 참고 포스팅 참고 바란다. try-catch 문법에 대해서는 남용해도 되는지 라는 질문을 이전에 본적이있어서 글로 남긴다. 실제로 try-catch는 필요한 구문이다. 예외처리를 정상적으로 처리하지 못한다면 thread가 즉시 종료 되버리기 때문에 적시적소에 맞는 try-catch문법은 필요하다. 사용시 유의점이 있다. 필요한 부분만, 어떤 Exception 이 발생할수 있을지 우려가 되는 부분에 적용 해야함 코드 처음부터 끝까지 묶은다음에 try-catch(Exception e) 로 묶어버리면 매우 안좋은 코드가 된다. Exception 사용보단 정확하게 발생할수 있을만한 Exception 을 catch 에 넣어주는것이 좋다. 아.. 2023. 10. 11. Java에서 Thread (Runnable) 이전 포스팅에서 Thread 에 대해 다룬적이 있다. 자세한 내용은 참고 포스팅 참고 바란다. Java에서 Thread란 참고포스팅의 Thread와 비슷한 개념으로 실행하는 주체를 말한다. 코드가 돌아가기 위해서는 Thread 위에서 코드가 돌아가고 이 Thread들이 모여 Process를 이룬다. Java에서 Thread를 자주 사용하곤 했는데 sleep 메서드를 사용할때 주로 사용이 되었다. 관련 내용은 아래 참고 포스팅 참고 바란다. Java 개발을 하면 IDE를 사용하여 Java 개발을 할 경우 console을 볼수 있는데 여기서 이 부분이 Thread명이다. 따로 설정을 안해주면 기본 Thread중 하나로 잡히게 되고 그 기본 Thread가 이렇게 보이게 된다. 자바에서 Thread를 사용할때 .. 2023. 10. 10. [Eclipse] method 생성 시 자동 생성되는 주석 제거 방법 자동으로 메서드를 생성하게 되면 // TODO Auto-generated method stub 이런 주석이 메서드에 포함되게 된다. 뭐 무시하고 개발해도 되지만 TODO를 사용하는 입장에서는 이렇게 TODO가 남발될 경우 추후에 관리에 불편하여 지우려고 한다. 방법은 다음과 같다. 이클립스의 Window -> Preferences 메뉴를 클릭 ( mac에서는 settings 클릭 ) Java -> Code Style -> Code Templates Code -> Method body Edit 버튼을 클릭한 후, "// ${todo}" 로 시작하는 라인을 제거 2023. 10. 9. @Transient 어노테이션 JPA를 사용할 경우 Entity 를 사용하게 되는데 여기 내에 값들은 entity 와 매칭되는 테이블의 컬럼 하나하나로 이어진다. 그렇다는건 entity 클래스 내에는 테이블의 컬럼값들만 정의를 해야하는데, 만약 dto처럼 사용이 되는 entity의 경우 는 테이블 컬럼들 이외에 추가로 다른 변수들도 사용해야할수도 있다. 이럴 경우 @Transient 어노테이션을 사용한다. 예를들어 Member Entity 가 아래와 같이 있다. @Entity public class Member{ private String id; private String pw; private String pwconfirm; pwconfirm 항목은 비밀번호를 한번더 입력해주세요에 사용되는 컬럼이라서 비지니스로직에서 pw==pwcon.. 2023. 10. 2. [eclipse] 디버깅 하기 자바에서 main 메서드나 호출에 의한 자바 소스가 실행이 될때 일반 모드로 실행을 하면 시작부터 끝까지 한번의 사이클에 진행이 된다. 물론 에러가 발생을 하면 그 지점에서 끊기지만 많은 메서드가 실행이 될 경우 중간중간에 출력을 멈춰서 보거나 사이클을 끊어서 진행하고 싶은 경우 디버깅 모드를 사용하면된다. eclipse 기준으로는 아래 사진에서 처럼 재생 버튼이 아닌 벌레(버그)모양 디버그 버튼을 누르면 된다. 그러면 일반 실행과 동일하게 서버는 기동이 되고 메서드가 호출이 될 경우 이렇게 디버그 브레이크포인트를 찍은 곳에서 한번씩 멈추면서 진행이 된다. 계속 하려면 F8 을 누르면 된다. 다양한 디버그 관련 버튼은 아래와 같다. F3 : 클래스, 메소드, 속성이 선언된 위치로 이동 F11 : 디버그 .. 2023. 10. 1. 추상클래스와 인터페이스 차이점 (abstract VS interface) 권장하는 개발의 방향중 하나가 선언부와 구현부를 나누는 것이다.대부분 사람들이 인터페이스를 통해 메서드를 선언 하고 클래스에서 상속받아 구현를 하는 방향으로 개발을 진행한다. 이번 포스팅에서 다룰 내용은 이런 인터페이스와,또 비슷하게 사용되는 추상클래스에 대해서 다뤄보려고 한다. 인터페이스에 대해서는 아래 참고포스팅을 참고하면 사용법에 대해서 나와있다.간단히 말하면 다른 클래스에서 만들어진 인터페이스를 사용하기 위해서는 implements로 상속 받아 사용할수 있다. 그리고 클래스일 경우엔 extends 를 통해서 상속을 받게 되는데추상 클래스 역시 클래스의 한 종류이기에 다른 클래스에서 사용하려면 extends로 사용하게 된다. 두가지 방법으로 상속을 받게 되면 동일하게 선언되어있는 메서드를 오버라이드.. 2023. 9. 29. JUNIT 테스트 메서드 순서 정하기 이전 포스팅에서 JUNIT 관련해서 글을 다룬적이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 사용법에 대해서는 아래 참고 포스팅이 있고. 여러개의 테스트 메서드를 작성했을경우 테스트에 순서를 지정하는 법에 대해서 다루려고 한다. 먼저 샘플 소스를 보면 아래와 같다. public class TestOrder { @Test public void testOrder1() { System.out.println("11"); assertThat(1000).isEqualTo(1000); } @Test public void testOrder2() { System.out.println("22"); assertThat(100).isEqualTo(100); } @Test public void testOrder3().. 2023. 9. 28. 이전 1 ··· 14 15 16 17 18 19 20 ··· 44 다음 반응형