목록스레드 (10)
Enjoy?
생성자 - 소비자 패턴멀티스레드의 대표적인 예제로 꼽히는 생성자 - 소비자 패턴에 대해 알아보자첨부파일Queue.javaQueue 인터페이스는 생성자와 소비자가 공통적으로 사용하게 될 메소드를 정의해 놓은 인터페이스다.생성자는 put() 메소들 이용해서 데이터 큐에 넣을 것이고 소비자는 pop() 메소드를 이용해 큐에 저장된 데이터를 꺼내서 사용한다.JobQueue.javaJobQueue 클래스는 Queue 인터페이스를 구현하는 클래스다.생성자와 소..
동기화lock, monitor, synchronized하나의 자원을 여러 스레드가 사용하려고 할때, 한 시점에서 하나의 스레드만 사용하게 할 수 있도록 한다.lock - 락(제어권)monitor - 인스턴스의 상태를 검사한다synchronized - 동기화공유되는 데이터 영역 객체(힙 영역) > 메소드(메소드 영역) > 변수(런타임 컨스턴트 풀 영역)힙에 저장된 어떤 객체의 변수 값(런타임 컨스턴트 풀에 저장된 참조 변수, 레퍼런스 변수)..
자바의 런타임 데이터 영역들과 공유 데이터JVM의 런타임 데이터 영역 PC 레지스터 영역 - 현재 스레드가 수행하고 있는 코드의 명령과 주소들을 저장한다.JVM 스택영역 - 지역 변수, 파라미터, 리턴 값과 지역 객체 레퍼런스를 저장한다. - 각각의 스레드들이 자신만의 스택을 만들어서 사용한다.힙 영역 - 생성된 객체(aRRAY도 객체임)들을 저장한다. - 모든 스레드에 의해서 공유된다.메소드 영역&nbs..
스레드 우선순위 스레드 여러 개를 운영하는 애플리케이션이라면 때때로 특정 스레드가 먼저 실행되게 하고 싶은 경우도 있다. 하나의 CPU를 가진 머신의 어떤 애플리케이션에서 여러 스레드가 실행되고 있다고 가정해본다.하이퍼스레딩이 지원되지 않는 CPU라면 멀티 CPU 머신이 아닌 이상 한 순간에 스레드 하나 밖에 실행할 수 없다. 따라서 JVM은 실행 대기중에 있는 스레드 중에서 우선순위에 따라 시분할(Time Sharing 또는 타임 슬라이싱) 방식으..
스레드 그룹 java.lang.ThreadGroup자바에서 모든 스레드는 특정 스레드 그룹에 멤버로서 존재하게 된다.처음 실행될 때 자바 런타임 시스템은 main이라는 이름의 스레드 그룹을 만든다이렇게 만들어진 main 스레드 그룹 인스턴스는 main 스레드를 생성해서 애플리케이션 실행 포인트인 main() 메소드를 호출하는 것이다.이후 생성된 스레드와 스레드 그룹은 기본적으로 main 스레드 그룹에 포함된다.그룹에 속한 스레드들은 한번에 동일한 메..
데몬스레드와 join() 스레드를 시작하기 전에 스레드의 setDeamon(true) 를 호출하면 메인 메서드가 종료됨과 동시에 스레드가 종료된다.반대로 스레드의 종료를 메인 스레드가 기다렸다가 종료되어야 하면 join();을 호출한다.자바에서는 애플리케이션 내부의 모든 스레드가 종료되지 않으면 JVM이 종료되지 않는다.첨부파일 NomalThreadTest.java를 실행하면 main()종료가 콘솔에 출력되고 5초후에 MyThread 종료가 출력된다..
스레드의 종료 run() 메소드의 실행을 완료한다. (run() 메소드의 실행이 종료되면 스레드가 종료된다.) interrupt() 메소드로 실행을 일시중지 시킨다.interrupt()를 실행해서 일시정시를 만들면 while문에서 판단후 바로 빠져나갈 수 있다. while(!Thread.currentThread().isInterrupted()스레드를 시작시킨 이후 그 스레를 중간에 중지하려면 예전에는 stop()이라는 메소드가 있었다. 여러 문제점으..
스레드의 생성과 시작 스레드의 생성과 시작스레드는 상속과 구현으로 구현할 수 있으며 run() 메소드의 모든 처리가 끝나면 바로 해당 Thread가 소멸된다.상속(white-box)Thread 클래스를 상속받고 run() 메소드를 오버라이딩 한다.구현(black-box)Runnable 인터페이스를 구현하고 구현된 객체를 Thread 생성시 인자로 넘겨준다.상속 vs 합성객체 합성이 클래스 상속보다 더 나은 방법이다.(Favor object compo..
스레드프로세스자기 자신만의 주소 공간을 갖는 독립적인(Self-Contained) 실행 프로그램스레드프로세 내의 독립적인 순차흐름 또는 제어경량 프로세스(Light-weight Process)컨텍스트(context)여러 프로세스를 반복 실행시 프로세스를 저장할 때 저장되는 정보운영체제에서 실행되는 하나의 프로그램을 프로세스라고 볼 때 스레드란 그 프로세스 안에서 실행되는 하나의 실행흐름이다. 하나의 프로세스는 한 개 이상의 스레드로 수행된다. 자바는..