분류 전체보기32 Thread Synchronized 쓰레드 배타제어 멀티 쓰레드 프로그램에서는 복수의 쓰레드가 자유롭게 동작한다.그리고 같은 인스턴스를 동시에 조작하는 경우도 있다. 하지만 이것은 경우에 따라서 곤란한 상황을 야기한다. 예를 들어 은행 계좌에서 돈을 인출한다고 해보자. 예금 잔고를 체크해서 필요금액 이상이 있으면 필요금액 만큼 인출하여 예금 잔고를 줄인다. 이렇게 하면 예금 잔고가 마이너스가 될 일은 없다. 하지만 2가지 쓰레드가 병행하여 실행 할 경우 예금잔고가 마이너스가 될 수 있다.어째서일까? 쓰레드 A와 쓰레드 B가 병행하여 동작하는 경우 타이밍에 따라서는 쓰레드 A의 잔고 확인과 잔고를 줄이는 처리 라고 하는 2개 처리 사이의 쓰레드 B의 처리가 끼어들 가능성이 있기 떄문이다!! 쓰레드 A와 쓰레드 B가 경쟁함으로써 예기치 않게 .. 2020. 4. 19. Thread Sleep Thread의 실행을 일시 정지시키는 방법 Thread 클래스의 sleep 메소드를 사용하면 쓰레드의 실행을 일시 정지시킬 수 있다.sleep 메소드는 Thread 클래스의 클래스 메소드이다. 예제를 살펴보자. 위 소스는 hello world를 10회 표시하는 소스인데 한 번 출력할 때마다 약 1000밀리(1초) 동안 쓰레드를 정지한다. 결국 1초 간격으로 hello world를 출력한다. sleep 메소드의 호출은 try-catch로 묶여있다. 이것은 sleep 메소드가 Interrupted Exception 이라고 하는 예외를 통보하는 경우가 있기 때문이다. Interrupted Exception은 쓰레드의 처리를 취소하는데 사용되는 예외이다. 2020. 4. 19. How to Excute Thread!? 쓰레드의 기동 방법 쓰레드의 기동방법에는 2가지 방법이 있다.1. Thread 클래스의 서브 클래스 인스턴스를 사용한다. MultiThread2 클래스는 주어진 문자열을 10000회 표시하는 쓰레드를 나타낸다.표시할 문자열은 생성자의 인수로 주어져 message 필드에 보관된다.MultiThread 클래스는 Thread 클래스의 서브클래스로서 선언 되어있다. main 메소드 안에서는 multiThread2 클래스의 인스턴스를 만들고 곧바로 그 인스턴스의 start 메소드를 호출한다.앞 글에서는 프로그램을 간단히 만들기 위해 하나의 문장으로 쓰레드를 기동 시켰다.하지만 MultiThread2의 인스턴스를 만든다와 그 인스턴스에 대응하는 쓰레드를 기동한다 는 어디까지나 별개의 처리이다. start 메소드를 .. 2020. 4. 19. Thread - [multi Thread] Multi Thread 여러개의 쓰레드로 구성된 프로그램을 멀티 쓰레드 프로그램이라고 한다. JAVA 언어로 작성된 프로그램을 작동시키면 처음엔 메인 쓰레드만 움직인다. 따라서프로그램 어딘가에서 새로운 쓰레드를 기동 시키기 전까지는 멀티 쓰레드 프로그램이라 할 수 없다. 간단한 멀티쓰레드 프로그램을 만들어보자. 쓰레드를 기동 시킬 때에는 java.lang.Thread 클래스를 사용한다.새로 기동 되는 쓰레드의 동작은 run 메소드에 기술한다. 새로운 쓰레드를 기동시키면 그 새로운 쓰레드가 run 메소드를 호출한다. 그리고 run 메소드가 종료되면 쓰레드도 종료된다. start 메소드는 Thread 클래스의 메소드이다. start 메소드를 호출하면 새로운 쓰레드가 기동한다.이때 주의해야 할 것은 새로운 쓰.. 2020. 4. 19. 이전 1 2 3 4 5 ··· 8 다음