java多线程之生产者和消费者问题
2018-03-19 12:48
323 查看
线程通信:不同的线程执行不同的任务,如果这些任务有某种关系,线程之间必须能够通信,协调完成工作.
经典的生产者和消费者案例(Producer/Consumer):
分析案例:
1):生产者和消费者应该操作共享的资源(实现方式来做).
2):使用一个或多个线程来表示生产者(Producer).
3):使用一个或多个线程来表示消费者(Consumer).
生产者消费者的示意图:
为什么生产者不直接把数据给消费者,而是先把数据存储到共享资源中,然后,消费者再从共享资源中取出数据,再消费.
在这里体现了面向对象的设计理念:低耦合.
高(紧)耦合: 直接使用生产者把肉包子给消费者,那么生产者中得存在消费者的引用,同理,消费者要消费生产者生产的肉包子,消费者中也得存在生产者对象的引用. 例子:主板和集成显卡.
低(松)耦合:使用一个中间对象,屏蔽了生产者和消费者直接的数据交互. 例子:主板和独立显卡.
高(紧)耦合:
//生产者
public class Producer{
private Consumer con;//消费者对象
}
//消费者
public class Consumer{
private Producer pro;//消费者对象
}
实现代码截图:
经典的生产者和消费者案例(Producer/Consumer):
分析案例:
1):生产者和消费者应该操作共享的资源(实现方式来做).
2):使用一个或多个线程来表示生产者(Producer).
3):使用一个或多个线程来表示消费者(Consumer).
生产者消费者的示意图:
为什么生产者不直接把数据给消费者,而是先把数据存储到共享资源中,然后,消费者再从共享资源中取出数据,再消费.
在这里体现了面向对象的设计理念:低耦合.
高(紧)耦合: 直接使用生产者把肉包子给消费者,那么生产者中得存在消费者的引用,同理,消费者要消费生产者生产的肉包子,消费者中也得存在生产者对象的引用. 例子:主板和集成显卡.
低(松)耦合:使用一个中间对象,屏蔽了生产者和消费者直接的数据交互. 例子:主板和独立显卡.
高(紧)耦合:
//生产者
public class Producer{
private Consumer con;//消费者对象
}
//消费者
public class Consumer{
private Producer pro;//消费者对象
}
低(松)耦合: //共享资源 public class ShareResource{ } //生产者 public class Producer{ private ShareResource resource;//共享资源对象 } //消费者 public class Consumer{ private ShareResource resource;//共享资源对象 }
实现代码截图:
相关文章推荐
- java多线程总结六:经典生产者消费者问题实现
- java多线程之生产者消费者问题
- java多线程总结六:经典生产者消费者问题实现
- Java多线程解决生产者-消费者问题
- 关于Java多线程实现生产者和消费者的问题
- java多线程之生产者与消费者问题的简单模拟
- Java多线程解决生产者消费者问题
- java多线程之生产者消费者经典问题 - 很不错的范例
- java多线程中的等待唤醒机制--多生产者多消费者问题
- java多线程之生产者消费者经典问题
- java多线程(同步与死锁问题,生产者与消费者问题)
- java多线程模拟生产者消费者问题,公司面试经常问的题。。。
- Java多线程--生产者与消费者问题
- Java多线程模拟实现消费者生产者问题
- Java多线程(2)生产者消费者问题(一)
- Java多线程生产者消费者说明等待唤醒机制问题和虚假唤醒问题
- Java多线程 生产者消费者问题 (2)
- java多线程之生产者消费者经典问题
- JAVA多线程经典问题 -- 生产者 消费者
- java多线程(同步与死锁问题,生产者与消费者问题)