摘要:
应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,知道仓库中再次放入产品为止 代码结果展示 代码: 1.商品:属性:品牌,名字 2线程1:生产者 3线程2:消费者 阅读全文
摘要:
【1】对比: 线程安全效率低 线程不安全,效率高 【2】可能造成死锁 死锁 》不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 》出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 【3】代码演示 package com. 阅读全文
摘要:
【1】Lock锁引入: JDK1.5后新增新一代的线程同步方式:Lock锁 与采用synchronized相比,lock可提供多种锁方案,更灵活 synchronized是JAVA中的关键字,这个关键字的识别是靠JVM来识别完成的。是虚拟机级别的。 但是Lock锁是API级别的,提供了相应的接口和对 阅读全文
摘要:
【1】代码展示: package com.msb.test03; import sun.security.krb5.internal.Ticket; /** * @author : liu * 日期:10:38:04 * 描述:IntelliJ IDEA * 版本:1.0 */ public cla 阅读全文
摘要:
package com.msb.test03; import sun.security.krb5.internal.Ticket; /** * @author : liu * 日期:10:38:04 * 描述:IntelliJ IDEA * 版本:1.0 */ public class BuyTic 阅读全文
摘要:
【1】出现问题: (1)出现了2个10张票或者3个10张票 (2)0,-1,-2可能: 上面的代码出现的问题:出现了重票,错票, 》线程安全引起的问题 原因:多个线程,在争抢资源的过程中,导致共享的资源出现问题。一个线程还没执行完,另一个线程就参与进来了,开始争抢。 解决: 在我的程序中,加入“锁” 阅读全文
摘要:
package com.msb.test08; /** * @author : liu * 日期:11:08:48 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Demo { //这是一个main方法:是程序的入口 public static void ma 阅读全文
摘要:
【1】设置伴随线程 将子线程设置为主线程的伴随线程,主线程停止的时候,子线程也不要继续执行了 案例:皇上--》驾崩--》妃子陪葬 结果: package com.msb.test08; /** * @author : liu * 日期:10:58:59 * 描述:IntelliJ IDEA * 版本 阅读全文
摘要:
【1】sleep:人为的制造阻塞事件 public class Test01 { //这是一个main方法:是程序的入口 public static void main(String[] args) { try { Thread.sleep(3000); } catch (InterruptedEx 阅读全文