- 浏览: 6218 次
- 性别:
- 来自: 北京
最新评论
文章列表
上节,我们谈到了生产者/消费者模型,这里,我不得不把我的一次实验结果粘贴出来,本来第一次运行的挺好的,可是第二次竟然出现了如下结果:
Producer:p produced:1
Consumer:c consumed:1
Consumer:c consumed:2
Producer:p produced:2
Producer: ...
回顾大学时期的java多线程学习,一直一知半解,工作后平时都是写些web前端代码,很少接触到服务器端编程,不用考虑线程安全性问题,多线程应用的可谓少之又少.
还记得当初的生产者/消费者模型吗?生产者负责生产数据,消费者负责取走数据,生产者和消费者可以看做是两个线程,他们共享一个缓冲区,这两个线程相互协调工作,生产者第一次生产数据之前,消费者不能取数据,生产者每生产一数据,便通知消费者取走该数据,消费者取走完毕后,便通知生产者可以继续生产数据,如此反复,直至完成所有读写操作.这便涉及到了多线程的同步问题.
实际生活中,我们遇到很多多线程同步的问题:QQ好友聊天; ...
隐私政策
Trancomm尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,Trancomm会按照本隐私权政策的规定使用和披露您的个人信息。但Trancomm将以高度的勤勉、审慎义务对待这些信息。除本隐私 ...
上节我们讲到如何避免线程中断带来的视觉漏洞,实际上,不足以说明问题,在通过不断的学习和深入思考里,往往能挖掘出更简单更直观的算法和技巧.温故而知新---这话一点都不假.
上两节,我们构造的线程都是通过继承Thread类,实际上,有些时候,我们不能够这么做:假如一个已经继承了另外一个父类的类,你还能让它继承Thread吗?很明显不能.Runnale能为你解决这一难题.甚至可以说,Runnable不仅为你解决java类单继承的缺陷,还能为你解决许多难题,它能使代码更简洁,使思路更清晰.下面,我将前面的生产者/消费者模型用实现Runnable接口的形式来完成.
...
举了生产者/消费者模型的例子,感觉还不过瘾,多线程在现实生活中的应用实在是太多太多了.下面我运用多线程解决火车站售票窗口售票这一实例.
火车站销售火车票,对于每个售票窗口的机器,我们看其为一个线程,我们来实现一下用4个线程销售完5张票.
火车票:
package ticket;
public class Ticket extends Thread {
private int ticket = 5;// 定义总的票数目
public void run() {
// 循环,每卖出一张票,即打印一次
while (ticket < 6) {
...