摘要:
我们使用线程的时候就去创建一个线程,这样实现起来非常简单,但是会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间 那么有没有一种办法使得线程可以复用就是执行完一个任务,并不被销毁,而是可以 阅读全文
摘要:
什么是等待唤醒机制 这是多个线程间的一种协作机制。谈到线程我们经常想到了是线程间的竞争(race),比如去争夺锁,但是这并不是故事的全部,线程间也会有写作机制。就好比在公司里你和你们的同事门,你们可能存在晋升时的竞争,但更多时候你们呢更多是一起合作完成某些任务 就是在一个线程进行了规定操作后,就进入 阅读全文
摘要:
Object类中wait代餐方法和notifyAll方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 进入到TimeWaiting(计时等待)有两种方式 * 1.使用sleep(long m)方法,在毫秒值 阅读全文
摘要:
定义:在Java中,任何对象都有生命周期,线程也不例外,它也有自己的生命周期。对象创建完成时,线程的生命周期便开始了执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时,线程的生命周期便会结束。 线程转换图: 1.NEW(新建状态):创建一个线程对象后,该线程对象就处于 阅读全文
摘要:
解决线程安全问题_同步方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 卖票案例出现了线程安全的问题 * 卖出了不存在的票和重复的票 * 解决线程安全问题的二种方案:使用同步方法 * 使用步骤: * 1.把 阅读全文
摘要:
同步代码块 同步代码块:javasynchronized关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问; 格式: synchronized(同步锁){ 需要同步操作的代码 } 同步锁: 对象的同步锁只是一个概念,可以想象为在对象上标记了一个锁 1.锁对象 可以是任意类型 2.多 阅读全文
摘要:
线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程安全的问题: 电影院要买票,我们模拟电影院买票的过程。假设要播放的电影是"葫芦娃大战奥特曼"本次电影的座 阅读全文
摘要:
如果一个类继承Thread,则不适合资源共享。但是如果实现了runnable接口的话,则很容易的实现资源共享 总结: 实现Runnable接口比继承Thread类所具有的优势: 1.适合多个相同的程序代码的线程去共享同一个资源 2.可以避免java中的单继承的局限性 3.增强程序的健壮性,实现解耦的 阅读全文
摘要:
public static void sleep(long millis);//使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。 毫秒数结束后线程继续执行 package com.yang.Test.ThreadStudy; public class Demo01Sleep { public 阅读全文