WWW

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ WWW ] in KIDS
글 쓴 이(By): seasons (오히려전법)
날 짜 (Date): 1996년09월03일(화) 13시39분31초 KDT
제 목(Title): WWW 강좌 10 : Java 배우기 (28)



A.Fun.A.Day(404) WWW 강좌 10 : Java 배우기 (28)
-----------------------------------------------



< 자바 백서 > 계속

4.3 멀티쓰레딩(Multuthreading)
   
   세련된 컴퓨터 사용자는 보통의 개인용 컴퓨터에서 한 번에 한가지만을 실
   행하는 경향(Mindset)을 참을 수  없다. 우리가 살고  있는 세계는 동시에 
   여러 가지 일이 발생하며, 우리의 컴퓨터도  그런 방식으로 작동해야 하길 
   바란다.
   
   불행히도, 한 번에 많은 것들이 일어나게 프로그램 하는 것은 통상적인 단
   일 쓰레드화된 C와 C++에서는 더욱 더 어렵다.  물론 C와  C++에서 멀티
   쓰레드 응용프로그램을 만들 수 있다. 그러나  어려움의 단계는 크기의 차
   원에 따라 올라가며, 심지어는 제작자의  라이브러리가 쓰레드가 안전한가
   에 대한 어떤 보증도 없다.
   
   명백하게 쓰레드를 지원하게끔 프로그램 하는 주요한 문제는  정확한 시점
   에서 필요한 것을 얻거나, 해제할 수 있다는 확신을 할 수  없다는 것이다. 
   미숙하게 메쏘드로부터 돌아온다면, 예로 예외가 발생하거나 다른 경우 해
   제되지 않은 것을 닫아 버리는 경우, 교착상태(DeadLock)가 일반적인 결과
   이다.
   
   ⊙ 언어단계에서 자바는 쓰레드를 지원한다
   
   쓰레드를 내부적으로 지원하는 것은 자바 프로그래머에게 감각적이고 쌍방
   향적인 그래픽 응용프로그램의 수행력을 향상시키는 강력한 도구를 제공한
   다. 응용프로그램이 페이지를 스크롤과 서버로부터 문서파일을 다운로드받
   으면서 동시 에 동영상과 음악을 연주해야한다면, 멀티쓰레딩이 단일한 처
   리공간에서 가벼운 동시발생과 빠름을 얻을 수 있는 방법이다. 쓰레드들은 
   가벼운 프로세서 또는 실행목록이라 불린다.
   
   쓰레드는 자바언어에서 중요한 근본원리(Keystone)이다.  쓰레드는 새로운 
   쓰레드 객체를 만들 수 있는 클래스이다.  쓰레드 클래스는 쓰레드를 시작
   하고, 실행시키고, 정지시키고, 쓰레드의 상태에  질의를 하는 풍부한 메쏘
   드의 집합이다.
   
   자바  쓰레드  지원은  20년전에  C.A.R  Horse가  소개하고  제록스사의 
   PARC's Cedar/Mesa 시스템에  구현되었던 광범위하게  이용된 모니터와 
   조건변수 전형에 기초한 세심한  동기화 원어(Synchronization Primitives)
   의 집합을 포함한다. 언어에다 쓰레드를 지원하게  통합하는 것은 더욱 쉽
   게  사용하고   더욱 견고하게   된다.   자바의 쓰레드   통합   스타일은 
   Cedar/Mesa를 따라 모델화 되었다.
   
   자바의 쓰레드는 우선적이다.  응용프로그램이 강하게 수행되길  바란다며, 
   주기적으로 다른 쓰레드가 실행되는 기회를 어떻게 빼앗을  것인지를 궁리
   해야 한다. 이것은 그래픽 응용프로그램에서 더 좋은 쌍방향응답을 보장한
   다.
   
   ⊙ 통합화된 쓰레드 동기화(Integrated Thread Synchronization)
   
   자바언어가 언어(구문) 단계에서 멀티쓰레드를 지원하고, 실행시스템과  쓰
   레드 객체가 지원한다. 언어단계에서, synchronized(동기화)로 선언된 클래
   스의 메쏘드는 동시에 실행하지 않는다.  그런  메쏘드는 변수들의 값들이 
   일정한 상태로 남아있다고 확신하는 모니터(Monitors)의 제어에 따라 움직
   인다. 모든클래스와 인스탄스 화된 객체는  만약 요구되면 움직이게 되는 
   자신들만의 모니터가 있다.
   
   핫자바에서 정렬(Sorting) 예제로터  두 코드를  보자. 주요한  관심분야는 
   kicker(sort 쓰레드를  시작한다)라 불리는  공통의 변수를  공유한 stop과 
   startSort 메쏘드이다 :
   
   public synchronized void stop() {
      if ( kicker != null ) {
          kicker.stop() ;
          kicker = null ;
      }
   }
   
   private synchronized void startSort() {
      if ( kicker == null || !kicker.isAlive() ) {
          kicker = new Thread(this) ;
          kicker.start() ;
      }
   }
   
   stop과 startSort 메쏘드는 동기화되게(synchronized) 선언되었다 - 공유된 
   kicker변수에서 일정한 상태를 유지하게 하면, 두 메쏘드는  동시에 동작하
   지 않는다. synchronized 메쏘드가 등장하면, 모니터를 획득한다. 모니터는 
   다른 모니터   메쏘드가 쓰레드   인스탄스를 가지고  동작하면  실행에서 
   synchronized 메쏘드를 배제한다.  어떤 수단에  의해서든지 synchronized 
   메쏘드가 반환되면, 모니터는 해제된다. 같은 객체의 다른 synchronized 메
   쏘드는 동작할수 있게 자유롭게 된다.
   
   자바   언어   응용프로그램을   작성한다면,   쓰레드    적으로   안전한
   (Thread-safe) 클래스와 메쏘드를 구현하는데  주의해야한다. 따라서 같은 
   방법으로, 자바언어 실행 라이브러리도 쓰레드 적으로 안전하다. 쓰레드 적
   으로 안전한 객체를 원한다면, 인스탄스 변수의  값을 바꾸는 어떤 메쏘드
   도 synchronized로 선언되어야 한다. 이렇게  하면 언제라도 단 하나의 메
   쏘드만 객체의 상태를 바꿀 수 있다. 자바언어 모니터는 재등장할 수 있다 
   - 메쏘드는 한 번 이상 같은 모니터를 얻을수 있고, 모든 것은 여전히 동
   작된다. 
   
   ⊙ 멀티쓰레드 지원 - 결론
   
   다른 시스템이 멀티쓰레딩을 위한 요소를 가지고 있을 때(통상 "가벼운 처
   리과정"의 라이브러리를 경유하여),자바처럼 언어 안에서 멀티쓰레드를  지
   원하게 만드는 것은 쓰레드 적으로 안전한 멀티쓰레드 클래스 생성이 보다 
   쉽게 하는 강력한 도구를 프로그래머에게 제공한다.
   
   또   다른  멀티쓰레드의   이익은   더  나은   쌍방향   응답(Interactive 
   Responsiveness)과    실시간    행동(Real-Time    Behavior)에    있다. 
   Stand-alone(독립하여 실행됨의 의미) 자바 실행 환경은 훌륭한 실시간 행
   동을 보여준다. 가장 대중적인 운영체계에서  동작하는 자바환경은 플랫폼
   으로부터 가능한 실시간 응답을 제공한다. 
   




--
     ___o            ___o            ___o           ___o           ___o
   __ \\ __        __ \\ __        __ \\ __       __ \\ __       __ \\ __
  (*)/  (*)       (*)/  (*)       (*)/  (*)      (*)/  (*)      (*)/  (*)
+---------------------------------------------------------------------------+
| Won Geun Baek               E-Mail: wgbaek@pharaoh.telecom.samsung.co.kr  |
| Samsung Electronics co.     http://pharaoh.telecom.samsung.co.kr/~wgbaek  |
| Karak-Dong, Seoul, Korea    TEL   : 02-405-1376 (7:00-18:00 Korea)        |
+---------------------------------------------------------------------------+

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.