摘要: 一 . 概念 我们使用多个线程的时候,我们需要线程运行之间按照一定的顺序运行下去,这个就需要线程之间的通信. 二 .例子 我们使用经典的生产者和消费者模式演示一下. 我们创建了两个线程,一个生产产品,另外一个线程消费产品. 我们使用了wait()方法和notify()方法发送信号量,实现线程之间的同 阅读全文
posted @ 2018-04-29 16:35 最爱五仁月饼 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 一 .概述 死锁是一种状态: 多个线程争夺多个锁,如果控制不当,每个线程都获得一部分锁而无法获取所有的全部的锁,此时就会发生死锁. 在一般状态下,死锁在没有外界的干预下会一直陷入到等待当中,也就是说,程序根本无法运行下去. 二 . 死锁 死锁的状态是我们不想看见的,但是当我们遇到的时候我们需要进行诊 阅读全文
posted @ 2018-04-29 14:22 最爱五仁月饼 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 一 概述 多线程在效率上能带给我们一些提升,但是也带来了一些其它的问题,这些问题如果不解决,我们根本无法保证线程的运算结果是正确的. 那么,这个时候使用多线程根本不存在任何意义. 带来的问题: [1] 多线程共享一个资源 造成资源状态不一致 [2] 多线程的执行顺序 ,线程一旦运行起来,我们能无法控 阅读全文
posted @ 2018-04-29 14:06 最爱五仁月饼 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 一 .概述 在jdk之中之前又一个stop方法可以关闭线程,但是那个方法存在线程安全的问题,现在已经被废除掉了. 之后就没有出现关闭线程的方法了. 但是在我们的使用过程之中,我们需要关闭线程,这个时候,我们就需要用其它的方式来完成线程的关闭操作. 二 . 使用标记位完成 以上的方式时可以完成任务的, 阅读全文
posted @ 2018-04-29 12:58 最爱五仁月饼 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 一 . 概述 join方法的核心作用就是: 当前线程等待子线程结束. 我们可以看到方法的重载,其实就是调用的线程等待子线程多少时间. 如果不传参数,默认为子线程完成之后才运行. 二 . 测试用例 现在我们创建了一个任务,打印1到1000,主线程和一个子线程分别进行. 打印的效果就是主线程和子线程不断 阅读全文
posted @ 2018-04-29 09:46 最爱五仁月饼 阅读(181) 评论(0) 推荐(0) 编辑