본문 바로가기

멀티쓰레드

자바 쓰레드(Thread) - 싱글쓰레드(single thread)와 멀티쓰레드(multi thread) 예제 처음에 *을 300개 찍고 다음에 #을 300개 찍는걸로 싱글쓰레드와 멀티쓰레드로 나누어 보자. 1. 싱글쓰레드 방법 2. 멀티쓰레드 - 멀티 쓰레드는 클래스를 두개로 나누었다. 메인 메소드가 있는 클래스. 어차피 메인 메소드도 쓰레드라고 했다. 메인 메소드에서 자식 쓰레드를 호출해서 동시에 시작한다. 자식쓰레드 더보기
자바 쓰레드(Thread) - Thread클래스를 상속받아 구현 첫번째로 Thread를 상속받아 예제를 만들어 보자. 생성자중 스트링 변수를 받는 생성자가 있는데 이걸로 쓰레드 이름을 넣을 수 있고 getName() 으로 가져올수 있다. 일단 예제를 보자 ThreadTest라는 클래스를 만들고 main메소드를 만들어서 두개의 쓰레드를 생성하였다. 그럼 이 소스에는 몇개의 쓰레드가 있을까? 2개? 아니다 3개다. 메인메소드도 하나의 쓰레드이다. 따라서 이 클래스에는 3개가 있다. 쓰레드의 시작은 레퍼런스.start();를 시스템에게 명령하면 이는 곧바로 run을 실행한다. 위의 소스 결과는 차례대로 숫자가 나왔지만 다시 실행하면 다른 결과값이 나온다. 차례대로 나올꺼라고 단정하면 절대 안되다 더보기
자바 쓰레드(Thread) - 쓰레드를 구현하는 2가지 방법 1. Thread 클래스와 Runnable인터페이스 * 자바에서는 스레드를 지원하는 방식은 크게 두가지 방식이 있다. - java.lang.Thread클래스를 사용하는 방식(White Box Pattern) - java.lang.Runable인터페이스를 사용하는 방식(Black Box Pattern) 사실 자바API를 보면 Thread클래스는 Runnable을 상속받고 있다. 더보기
자바 쓰레드(Thread) - 멀티 쓰레드(Multi-Thread) * 스레드 기반 멀티 태스킹에서는 스레드가 가장 작은 코드 단위이다. * 즉, 단일 프로그램이 두개 이상의 태스크(task)를 동시에 수행할 수 있다는 것을 의미(멀티쓰레딩) * 프로그램에서 발생하는 유휴시간(idle time)을 이용할 수 있는 효율적인 프로그램을 개발 가능 * 대부분의 I/O장치는 CPU보다 느리기 때문에, 이들을 사용하는 프로그램은 많은 시간을 이들로부터 정보를 주고 받는 과정에서 소비한다. * 멀티 쓰레딩을 이용하면 이러한 유휴시킨에 다른 태스크를 수행할 수 있다. * 멀티 쓰레딩이 지원되지 않던 시절에는 이터럽트 등의 편범을 이용해서 프로그래밍 * 자바에서는 언어 차원에서 스레드를 지원한다. * 모든 프로세스는 적어도 하나의 실행되는 스레드를 갖고 있어야 하며, 프로그램이 시작 .. 더보기