728x90
반응형

서버 개발/Thread 3

Java Thread - (3) 동기화

동기화 Thread는 독자적입니다. 이 말은 즉 보통은 다른 Thread를 신경쓰지 않고 자신의 작업을 수행한다는 의미입니다. 멀티프로세서 기반의 시스템에서는 보통 여러개의 CPU에서 각각 많은 양의 Thread들이 동시다발적으로 작업을 수행합니다. 이번 포스팅에서는 이 많은 양의 Thread들이 어떻게 협업하고, 동기화 되는지, 그리고 공유 자원을 접근할 때에는 어떤 방식으로 할 수 있는지에 대해 알아보겠습니다. Lock Thread들을 동기화 할때는 락이라는 개념을 사용합니다. 이 Lock은 보통 자원을 하나의 Thread만 접근 가능하게 잠궈놓는다는 의미로 쓰입니다. 하나의 Thread가 자원을 접근하고 있을 때, 다른 Thread가 같은 자원에 접근한다면, 이 자원은 의도하지 않은대로 변경이 될 ..

Java Thread - (2) 제어

Thread 제어 Thread 일종의 생명주기 (LifeCycle)을 가집니다. 보통은 start()메소드를 호출해 쓰레드가 작업을 시작하게 합니다. 이번 포스팅에서는 몇가지 Thread를 제어하는 메소드들을 알아보고자 합니다. Thread.sleep() - static메소드로 현재 이 메소드를 호출하는 Thread가 일정 시간동안 멈춰있게 합니다. wait() / join() - 2개 혹은 그 이상의 Thread들을 기다리거나 협업할 수 있게 합니다. interrupt() - sleep중이거나 wait중인 Thread들을 재가동 시킵니다. 위의 메소드들에 대한 예제를 구현해보겠습니다. sleep sleep중인 Thread는 아무것도 하지 않고 기다리는 상태 (IDLE상태)입니다. 이 작업은 일정 시간동..

Java Thread - (1) 기본 개념

Thread란 개념적으로 Thread는 프로그램 내의 Control Flow의 일종입니다. 이는 Process와 비슷한 개념인데, 차이점은 한 어플리케이션의 Thread끼리는 OS Process끼리의 관계보다 더 가까운 개념입니다. Thread는 기본적으로 프로그램의 모든 객체, 인스턴스, static변수들에 접근이 가능합니다. 하지만 Thread들은 각각 다른 local변수들을 가지고 있게 됩니다. Runnable 인터페이스 자바의 모든 실행기능은 Thread와 연관되어있습니다. 기본적으로는 main Thread가 작업들을 수행합니다. 이 Thread는 생성될 때 매개변수를 통해 수행할 작업을 전달받습니다. 이 작업이 바로 Runnable 입니다. 아래는 Runnable 인터페이스의 정의입니다. pub..

728x90
반응형