线程通信的经典问题:生产者消费者问题

package ThreadTest2;
//	线程通信的经典问题:生产者消费者//店员(资源)
class Clerk{private int productCount = 0 ;public synchronized void produceProduct() {if(productCount < 100 ) {++productCount;System.out.println(Thread.currentThread().getName()+":开始生产第"+  productCount + "个产品");notify();}else {try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public synchronized void comsumeProduct() {if(productCount > 0) {System.out.println(Thread.currentThread().getName() + ":开始消费第"+productCount + "个产品");productCount--;notify();}else {try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Producer extends Thread{private Clerk clerk;public Producer(Clerk clerk) {super();this.clerk = clerk;}public void run() {System.out.println(  Thread.currentThread().getName()+":开始生产产品");while(true) {try {this.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}clerk.produceProduct();}}}class Customer extends Thread{private Clerk clerk;public Customer(Clerk clerk) {super();this.clerk = clerk;}public void run() {System.out.println(Thread.currentThread().getName()+":开始消费产品");while(true) {try {this.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}clerk.comsumeProduct();}}}public class ProductTest {public static void main(String[] args) {Clerk clerk = new Clerk();Customer c1 = new Customer(clerk);c1.setName("消费者1");Producer p1 = new Producer(clerk);p1.setName("生产者1");p1.start();c1.start();}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String类中不同拼接方式

有变量名参与都不是在常量池中了&#xff0c;类似于new

使用JMeter创建数据库(Mysql)测试

我的环境&#xff1a;MySQL&#xff1a;mysql-essential-5.1.51-win32 jdbc驱动&#xff1a;我已经上传到csdn上一个&#xff1a;http://download.csdn.net/source/3451945 JMeter&#xff1a;jmeter-2.4 任意版本都行。 1.首先我们要有一个可以做测试的数据库&#xff0c;当然…

String类与其他数据类型得转换

一&#xff1a;与基本数据类型或者包装类 二、String与char型数组得转换 三、String类与字节数组byte[]之间的转换 输出的是字符中得ASCII码。 getBytes使用的默认得编码集 可以自主设置编码集否则为默认编码集 输出&#xff1a;

字符串类中的StringBuffer,StringBuilder

StringBuffer类的常用方法 &#xff0c; String StringBuffer,StringBuilder的效率

JAVA日期和时间API

JDK8以前&#xff1a; public void test2() { // 构造器1&#xff1a;Date date1 new Date();System.out.println(date1); // date1.toString// 构造器2&#xff1a;创建指定毫秒数的Date对象Date date2 new Date(1631722133700L);System.out.println(date2);} JDK8以后: …

Calender日历类

使用方法&#xff1a; Testpublic void test() { // 调用其静态方法得到一个对象Calendar calendar Calendar.getInstance();System.out.println(calendar.getClass()); // 输出的为 GregorianCalendar类// get() 得到所需的数据 比如这一年的第几天int days calendar.…

JDK8后的日期时间API

Testpublic void test() { // now() 获取当前的时间&#xff0c;日期LocalDate ld LocalDate.now();LocalTime lt LocalTime.now();LocalDateTime ldt LocalDateTime.now();System.out.println(ld);System.out.println(lt);System.out.println(ldt);// of():指定年月日 …

送花(洛谷 2073)

题目背景 小明准备给小红送一束花&#xff0c;以表达他对小红的爱意。他在花店看中了一些花&#xff0c;准备用它们包成花束。 题目描述 这些花都很漂亮&#xff0c;每朵花有一个美丽值W&#xff0c;价格为C。 小明一开始有一个空的花束&#xff0c;他不断地向里面添加花。他有…

神经网络的介绍

对于线性的定义&#xff1a;满足可加性和齐次性。

iOS 集成银联支付

转自&#xff1a;http://www.jianshu.com/p/92d615f78509 当初集成支付宝的时候 觉得见了这么丑的代码 加上这么难找的下载地址 在配上几乎为零的文档 寒哥就要吐血了下午去集成银联 才知道 血吐的早了 下载地址 https://open.unionpay.com/upload/download/Development_kit854…

pytorch入门使用

1、创建张量&#xff1a; 2、张量的方法和属性&#xff1a; (1) t1.item()只能用于张量中只有一个数据的情况下获取张量内的值 &#xff08;2&#xff09;numpy() 将tensor转换为numpy数组 t2 torch.tensor([[[1, 2]]]) print(t2) print(t2.numpy()) 输出结果&#xff1a;…

Python rang()函数

返回类型为迭代器 r range(11) print(r) 若输出r中的值&#xff0c;需要调用list(r) print(list(r)) 输出&#xff1a; 方法二: #二&#xff1a; r1 range(1,10) print(list(r1)) 方法三&#xff1a; #三&#xff1a; r2 range(1,10,2) print(list(r2)) 判断某一个数是…