线程通信问题分解1
package com.msb.test10; /** * @author : liu * 日期:15:42:06 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Product {//商品类 //品牌 private String brand; //名字 private String name; //setter,getter方法: public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.msb.test10; /** * @author : liu * 日期:15:45:09 * 描述:IntelliJ IDEA * 版本:1.0 */ public class ProducerThread extends Thread{//生产者线程 //共享商品 private Product p; public ProducerThread(Product p) { this.p = p; } @Override public void run() { for (int i = 1; i <= 10; i++) {//生产十个商品 if(i%2==0){ //生产费列罗巧克力 p.setBrand("费列罗"); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } p.setName("巧克力"); }else{ p.setBrand("哈尔滨"); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } p.setName("啤酒"); } System.out.println("生产者生产了:"+p.getBrand() + "---"+ p.getName()); } } }
package com.msb.test10; import com.sun.media.sound.RIFFInvalidDataException; /** * @author : liu * 日期:16:02:52 * 描述:IntelliJ IDEA * 版本:1.0 */ public class CustomerThread extends Thread{//消费者线程 //共享商品资源 private Product p; public CustomerThread(Product p) { this.p = p; } @Override public void run() { for (int i = 1; i <= 10 ; i++) {//消费次数 System.out.println("消费者消费了:"+ p.getBrand()+"---"+ p.getName()); } } }
package com.msb.test10; /** * @author : liu * 日期:16:07:36 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test { //这是一个main方法:是程序的入口 public static void main(String[] args) { //共享商品 Product p=new Product(); ProducerThread pt=new ProducerThread(p); CustomerThread ct=new CustomerThread(p); pt.start(); ct.start(); } }
出现问题:
1.生产者和消费者么有交替输出
2.打印数据错乱
费列罗啤酒
哈尔滨巧克力
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本