![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 线程 操作系统
dcot
这个作者很懒,什么都没留下…
展开
-
Java生产者消费者模式二
上次模拟的是用缓存,这次模拟信号灯。假设流水线上不断的输送零件,工人装配一个零件然后发出信号表示装配完毕,然后收到信号后引擎动一下,让流水线取出下一个零件,引擎再发出信号,表示下一个零件拿来了,然后工人继续装配,循环往复。public class Test { public static void main(String[] args) { Pipeline Pipeline = ...原创 2019-05-20 23:44:08 · 82 阅读 · 0 评论 -
Java模拟生产者消费者模式
生产者消费者模式,线程同步算法之一,就是一个线程生产资源,一个线程负责消耗资源。两个线程,一个叫生产者,一个叫消费者,生产者往缓存放资源,满了就不再生产,等消费者拿走资源;消费者从缓存取走资源,缓存空了就等待生产者生产资源。注意其中notify和wait成对出现且必须放在synchronize中。public class Test { public static void main(St...原创 2019-05-18 00:44:48 · 712 阅读 · 0 评论 -
Java模拟死锁
死锁,就是一堆线程或进程,各自都想运行,但都缺资源运行不了,而这些资源若在不破除死锁四个必要条件(互斥、请求与保持、不可剥夺、循环等待)的情况下,谁也拿不到资源去运行。例子,假如俩人要抽烟,抽烟要打火机和香烟,A持有了打火机,B持有了香烟,谁也不肯在完成抽烟之前释放手中的打火机或香烟,于是俩人就都抽不到烟,形成僵持局面,这种僵持局面就是死锁。以下用Java代码模拟。//main中加入//S...原创 2019-05-17 21:10:59 · 268 阅读 · 0 评论 -
Java简单模拟可重入锁
对象具有内置的监视器,一旦线程锁住对象,对象就成为监视器,线程再通过获取监视器上的锁进入监视器,执行同步方法前必须获取锁,对监视器对象调用wait释放锁,调用notify重新通知另一对象获取锁并恢复执行。synchronized是可重入锁,那什么是可重入锁呢?线程已经获取一个对象的锁以后,如果还继续试图获取该对象的锁是不会导致死锁的,而是会马上获得该锁,锁的计数器会+1,然后直接进入synchro...原创 2019-05-23 13:28:59 · 256 阅读 · 0 评论