interface 인터페이스  파일 카피 file copy
File Io In read out write

쓰레드 : 객체를 관통하는 실타래 이다 .  sinking in java -- book name

여러개의 작업을 하기위해서 쓰레드를 생성
객체를 사용하기위해서 this를 파라미터로 넘긴다.

Controllor 클래스

public void startCalc() {
  Thread t0 = new AddThread(1,1000,this);
  Thread t1 = new AddThread(1001,2000,this);
  Thread t2 = new AddThread(2001,3000,this);
 
  t0.start();
  t1.start();
  t2.start();
  
  try {
   t0.join();
   t1.join();
   t2.join();
   
  } catch (InterruptedException e) {
   
   e.printStackTrace();
  }
}

AddThread클래스

private Controllor c;

public AddThread(int start, int end, Controllor c){
  this.start = start;
  this.end = end;
  this.c = c;
}

전역으로 사용하기위해 객체를 this.c해서 전역으로 사용할수 있게 해준다 .
 
c의 래퍼런스를 받음으로써 Controllor에 메소드를 사용할수 있다.

쓰레드   객체
_______________________
main   |  controllor

thread  --> t1   ^
thread --> t2   | 
thread --> t3


this 객체를 넘기면 thread는 AddThread라는 하나의 객체만을 바라본다 .

 

implements 는 Thread 를 하나만 사용한다는 것

extends 는  Thread를 여러개 사용한다는 것


run  method {
 동시에 돌아가는 메소드를 넣는다
 생성자를 통해서 데이터를 전달하도록한다.
}

Thread 에 join메소드는 쓰레드는 메인을 나중에 실행하게 만든다 .
join를 먼저 실행하게 만드는 메소드 .

 

 

t0.setDaemon(true) --> 같이 메인쓰레드 하고 같이 서브 쓰레드는 멈출때..

메인이 되는 쓰레드는 user 쓰레드

밑에 있는 쓰레드를  Daemon 쓰레드..

sleep cpu를 다른작업 하도록 시간을 벌어주는것 ..

sleep 상태인 Thread를 깨우는 메소드는 interrupt

_________________________________________________

synchronized

synchronized (개체)를 획득했다 lock
      moniter

Synchronized 동시에 여러개의 일을 수행할때 순서 있게 실행하기위해서
사용법
public * synchronized int print(){  // 사용법 1
     ** synchronized(this){ // 사용법 2
  for(int i =0 ; i<10 ; i++){
   System.out.println("exe");
  }
 
 }

}

lock이 풀리는 경우는synchronized를 실행하고 난후다.


*wait && notify*
wait() 를 걸면 풀 방법이 없다(혼자서는 .)

---모든 객체는 쓰레드를 묶어 둘수 있는 wait 라는 객체를 가지고 있다.

 WaitEx1 이라는 저장소
T->input       ---------------------------
main.notify    |   t(output)               ^--->  |-> 깨워져서 나감..
                     ------------------ ^------
                          |  notify --|
                          | 
                          | t(output)
                         ㅗ아래로 저장
                   -----------
                   | waitpool |  
                    ------------


wait & notify 로 쓰레드를 컨트롤 할수 있다 .
ex) synchronized 를 써줘야 한다 .

 

 

 

 

 

 

채팅 단계별 소스.... ui전혀 없음..

+ Recent posts