随笔分类 - 多线程
摘要:更改 代码: package com.msb.test12; import jdk.nashorn.internal.objects.annotations.Constructor; import java.util.concurrent.locks.Condition; import java.u
阅读全文
摘要:【1】 【2】 package com.msb.test11; /** * @author : liu * 日期:15:42:06 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Product {//商品类 //品牌 private String brand
阅读全文
摘要:【1】利用同步代码块解决问题 package com.msb.test10; import com.sun.media.sound.RIFFInvalidDataException; /** * @author : liu * 日期:16:02:52 * 描述:IntelliJ IDEA * 版本:
阅读全文
摘要:package com.msb.test10; /** * @author : liu * 日期:15:42:06 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Product {//商品类 //品牌 private String brand; //名字 p
阅读全文
摘要:应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,知道仓库中再次放入产品为止 代码结果展示 代码: 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
阅读全文
摘要:join方法:当一个线程调用了join方法,这个线程就会被先执行,他执行结束以后才可以去执行其余的线程。 注意:必须先start,在join才有效 package com.msb.test06; /** * @author : liu * 日期:15:02:26 * 描述:IntelliJ IDEA
阅读全文
摘要:【1】同优先级别的线程,采取的策略就是先到先服务,使用时间片策略 【2】如果优先级别高,被cpu调度的概率就高 【3】级别1-10 默认的级别为5 【4】代码 package com.msb.test05; /** * @author : liu * 日期:14:36:45 * 描述:Intelli
阅读全文
摘要:(1)start():启动当前线程,表面上调用start方法,实际在调用线程里面run方法 (2)run():线程类、继承Thread类或者实现Runnable接口的时候,都要重新实现这个run方法,run方法里面是线程要执行的内容 (3)currentThread:Thread类中一个静态方法:获
阅读全文
摘要:【1】线程声明周期:线程开始 》线程消亡 【2】线程经历那些阶段:
阅读全文
摘要:对比第一种和第二种创建线程的方式,无论第一种继承Thread类的方式还是第二种实现Runnable接口的方式,都需要一个run方法, 但是这个run方法有不足: (1)没有返回值 (2)不能抛出异常 基于上面的两个不足,在JDK1.5以后出现了第三种创建线程的方式:实现Callable接口: 实现C
阅读全文
摘要:【代码】 package com.msb.test03; import sun.security.krb5.internal.Ticket; /** * @author : liu * 日期:10:38:04 * 描述:IntelliJ IDEA * 版本:1.0 */ public class B
阅读全文