线程通信2

来源:互联网 发布:高速数据采集 编辑:程序博客网 时间:2024/06/08 03:18

package com.cavaness.quartzbook.chapter3;public class Data {private String name = "unknown";private String sex = "unknown";private boolean bFull = false;public synchronized void put(String name, String sex) throws InterruptedException {if (isbFull()) {wait();}this.name = name;try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();throw e;}this.sex = sex;setbFull(true);notify();}public synchronized void get() throws InterruptedException {if (!isbFull()) {wait();}System.out.println(name);try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();throw e;}System.out.println(sex);setbFull(false);notify();}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public boolean isbFull() {return bFull;}public void setbFull(boolean bFull) {this.bFull = bFull;}public static void main(String[] args) {Data data = new Data();new Thread(new Producer(data)).start();new Thread(new Consumer(data)).start();}}

package com.cavaness.quartzbook.chapter3;public class Producer implements Runnable {private Data data;public Producer(Data data) {super();this.data = data;}@Overridepublic void run() {int index = 0;while (true) {if (index == 0) {try {data.put("zhangsan", "male");} catch (InterruptedException e) {e.printStackTrace();}} else {try {data.put("lisi", "female");} catch (InterruptedException e) {e.printStackTrace();}}index = (index + 1) % 2;}}}

package com.cavaness.quartzbook.chapter3;public class Consumer implements Runnable {private Data data;public Consumer(Data data) {super();this.data = data;}@Overridepublic void run() {while (true) {try {data.get();} catch (InterruptedException e) {e.printStackTrace();}}}}


原创粉丝点击