프로그래밍과 잡담

[Java] 쓰레드... 본문

프로그래밍/Java,Kotlin

[Java] 쓰레드...

크레온 2012. 9. 28. 14:31

망할 쓰레드를 이상하게 사용해버렸군..


그냥 싱글 쓰레드인데.. 멀티 쓰레드로 착각 해버린거지..



뭐냐하면 


//<망한 예제>
class MyThread  extends Thread{
      
  public void  run(){
      //작업1
      doSomething1();
      //작업2
      doSomething2();
  }
}


이런식을 써버린거지..

저래 써 놓고서  아 이러면 멀티쓰레드가 되겠지하고 생각을 한것이다.. 아 이런 병신짓을 이제야 깨닫다니..


멀티 쓰레드를 할려면 그야 말로 쓰레드 클래스를 여러개 생성해야하는데 하나로 해버리는 미친짓을 했다는것..


멀티 쓰레드를 사용할려면


//<정상 예제>

//관리용 클래스..
class ThreadManager extends Thread {
   public void run(){

      // 작업1 쓰레드 시작
      MyThread p1 = new MyThread();
      p1.start();
      //작업2 쓰레드 시작
      MyThread p2 = new MyThread();
      p2.start()
  }
}


//작업용 클래스
class MyThread  extends Thread{
      
  public void  run(){
      doSomething();
  }
}


위에 처럼 실행을 해야.. 멀티 쓰레드가 되는것이다.. 아 왜 이걸 몰르고 이상하게 한건지..  뭐 여하튼 이제라도 알았으니 된거지 


위에 있는 것을 설명하자면.. 망한 예제의 경우는  그냥 한 개의 쓰레드에서 여러개의 작업을 돌리는 것에 불과하다.

그러니까 싱글 쓰레드에서 2개 작업을 순서대로 돌리는것이지..


하지만  정상 예제라 썼는데 이게 제대로 만든건지는 모르겠는데..

뭐 여하튼  방식은 이런 식으로 처리해야 할것이라 생각한다.


쓰레드관리 클래스에서  작업을 처리하는 클래스를 생성해서 돌려주는것이다.

쓰레드 관리 클래스라 했지만 그냥 쓰레드 생성하고 시작하는거 밖에 없다. 


이러면 멀티 쓰레드가 완성..

물론  저 doSomething() 이라는 메소드는 알아서 해줘야한다.  

모든 작업 쓰레드에서  공통적으로 사용하는 작업을 추가해주면 된다.



더 자세한건 구글에 멀티 쓰레드로 검색하면 나올 것이다. 








반응형
Comments