[ 스레드의 동기화 ]
class InputThread extends Thread{
private Data data;
public InputThread(Data data) {
this.data=data;
}
@Override
public void run() {
synchronized (data) {
for(int i=0;i<100;i++) {
for(int j=1;j<=100000000;j++);
data.setData(i+1, i);
}
}//lock이 풀림->대기중인 스레드가 공유객체를 사용할수 있음
}
}
class OutputThread extends Thread{
private Data data;
public OutputThread(Data data) {
this.data=data;
}
@Override
public void run() {
synchronized (data) {
int[] b=data.getData();
for(int n:b) {
System.out.print(n +" ");
}
System.out.println();
}
}
}
public class Test04_동기화 {
public static void main(String[] args) {
Data data=new Data();
InputThread thread1=new InputThread(data);
thread1.start();
OutputThread thread2=new OutputThread(data);
thread2.start();
}
}