packagecom.young.day021;publicclassClerk{ privateintproduct=0;//产品默认0; //生产者生成出来的产品交给店员 publicsynchronizedvoidaddProduct(){ if(this.product>=20){ try{ wait();//产品已满,请稍等在生产 }catch(InterruptedExceptione){ //TODO自动..
分类:
其他好文 时间:
2016-11-23 08:27:54
阅读次数:
196
publicclassClerk{ privateintproduct=0;//产品默认0; //生产者生成出来的产品交给店员 publicsynchronizedvoidaddProduct(){ if(this.product>=20){ try{ wait();//产品已满,请稍等在生产 }catch(InterruptedExceptione){ //TODO自动生成的catch块 e.printS..
分类:
编程语言 时间:
2016-11-22 15:13:30
阅读次数:
149
有bug 的代码(马士兵老师讲解的): 解决方法: http://blog.csdn.net/u013243986/article/details/48755183 看过 http://blog.csdn.net/thinkpadshi/article/details/8163751 下面的评论说: ...
分类:
其他好文 时间:
2016-11-21 19:18:58
阅读次数:
274
原因:请求数多时对共享资源的并发访问,产生竞争。 例如: 操作系统,进程和线程对CPU资源的竞争获取 生产者-消费者问题,比如队列 读者-作者问题 哲学家进餐问题 客服分配问题,限制每个客服最多服务多少个用户,多余的用户只能排队 线程池,比如Web容器的线程池 秒杀,抢票,比如:购物,秒杀,买火车票 ...
分类:
其他好文 时间:
2016-11-20 07:17:09
阅读次数:
196
数据处理模型 1、管道:UNIX pipes就是一种最常见的管道。管道有助于进程原语的重用,已有模块的简单链接即可组成一个新的模块。 2、消息队列:消息队列有助于进程原语的同步,程序员将数据处理任务以生产者或消费者的形式编写为进程原语,由系统来管理它们何时执行。 3、MapReduce:在MapRe ...
分类:
其他好文 时间:
2016-11-20 07:02:31
阅读次数:
238
前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq。 首先引入配置文件org.springframework.amqp,如下 一:配置消费者和生成者公共部分 二:配置生成者 三:生产者程序 其中convertAndSend方法默认第一个参数是交换机名称,第二个参数 ...
分类:
编程语言 时间:
2016-11-19 01:31:57
阅读次数:
304
我们常用wait(),notify()和notifyAll()方法来进行线程间通信。线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过消费一个产品使得缓冲区有空闲并通知生产者线程。notify()或notifyAll()的调用给一个或 ...
分类:
其他好文 时间:
2016-11-18 21:31:16
阅读次数:
182
AMQP和IM的区别:AMQP:1、可以一对多广播,也可以一对一广播2、生产者和消费者不知道对方是谁IM:1、只能一对一广播2、生产者和消费者知道对方是谁RabbitMQ:只是消息代理我们不生产消息,我们只是消息的搬运工每条消息只会发送给一个订阅者(一个萝卜一个坑)消息的传递过程:..
分类:
其他好文 时间:
2016-11-18 19:08:03
阅读次数:
174
1.线程:一个程序里面不同的执行路径。 2.推荐实现接口runnable而不是继承thread,因为Java是单继承的,继承了thread之后机不能继承其他类了。 3.join相当于方法调用。 3.syschronized,在执行这个方法过程之中当前对象被锁定。 4.掌握生产者消费者问题。 5.在判 ...
分类:
编程语言 时间:
2016-11-17 20:22:49
阅读次数:
148