//synchronized
public class ShareData {
//공유하는 자원
int data;
public synchronized void up(String name){ //synchronized 메소드 이름 앞에 선언
System.out.print(name + " 이 " + data);
data++;
System.out.println("를 " + data + "로 증가시킴");
}
public synchronized void down(String name){ //synchronized 선언
System.out.print(name + " 이 " + data);
data--;
System.out.println("를 " + data + "로 감소시킴");
}
}
public class UpThread extends Thread {
ShareData data;
String name;
public UpThread(ShareData data, String name) {
this.data = data;
this.name = name;
}
@Override
public void run() {
for(int i = 0 ; i <4 ; i++){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
data.up(name);
}
}
}
public class DownThread extends Thread {
ShareData data;
String name;
public DownThread(ShareData data, String name) {
this.data = data;
this.name = name;
}
@Override
public void run() {
for(int i = 0 ; i <4 ; i++){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
data.down(name);
}
}
}
main 클래스
public class ThreadMain {
public static void main(String[] args) {
ShareData data = new ShareData();
UpThread up = new UpThread(data, "UP");
DownThread down = new DownThread(data, "DOWN");
up.start();
down.start();
}
}
'JAVA' 카테고리의 다른 글
스레드(Thread) 기본 실습 -blocking 메소드(SleepTest, yield, join) (0) | 2013.02.06 |
---|---|
스레드(Thread) 기본 -synchronized(동기화) (0) | 2013.02.06 |
스레드(Thread) 기본 실습 -우선권 (0) | 2013.02.06 |
스레드(Thread) 기본 실습 (0) | 2013.02.06 |
[실습] 우편번호검색기 (0) | 2013.02.05 |