-
Java - Wait, NotifyJava 2018. 1. 31. 10:38반응형public class CommonData {private String data;//synchronized 는 차후 다수의 스레드가 접근할 여지가 있는지 확인 해 볼것public synchronized void getData() {try {//1. 데이터가 있는지 확인if(data != null) {//2. 있으면 가져오고 없으면 가져오지 않는다.System.out.println("가져 온 값 : "+data);data = null;//가져온 후 값을 비워 준다.}//3. 상대를 깨우고 나는 쉰다.notify();wait();} catch (InterruptedException e) {e.printStackTrace();}}public synchronized void setData(String data) {try {//1. 값이 있는지 확인if(this.data == null) {System.out.println("넣은 값 : "+data);this.data = data; //2. 값이 없으면 만들어 준다.}//3. 상대를 깨우고 나는 쉰다.notify();wait();} catch (InterruptedException e) {e.printStackTrace();}}}public class Producer extends Thread {private CommonData data;public Producer(CommonData data) {this.data = data;}@Overridepublic void run() {//데이터를 생산 함for(int i=1; i<=5;i++) {data.setData("DATA_"+i);}}}public class Consumer extends Thread {private CommonData data;public Consumer(CommonData data) {this.data = data;}@Overridepublic void run() {//데이터를 소비 함for(int i=1; i<=5;i++) {data.getData();}}}public class Main {public static void main(String[] args) {CommonData data = new CommonData();Producer pro = new Producer(data);Consumer con = new Consumer(data);pro.start();con.start();}}반응형
'Java' 카테고리의 다른 글
Java - Deamon Thread, Thread Group (0) 2018.01.31 Java - Stop, Interrupt (0) 2018.01.31 Java - Thread (0) 2018.01.30 Java - 정규표현식 (0) 2018.01.26 Java - Stack, Queue (0) 2018.01.25 댓글