분류 전체보기
- interface 인터페이스 파일 카피 file copy 2015.05.10
- File Io In read out write 2015.05.10
- Thread 2015.05.10
- java 채팅 프로그램. ui 없음.. 2015.05.10
interface 인터페이스 파일 카피 file copy
File Io In read out write
Thread
쓰레드 : 객체를 관통하는 실타래 이다 . 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 를 써줘야 한다 .