摘要: 一、线程的强制运行 二、线程的休眠 一、线程的强制运行 在线程操作中,可以使用 join() 方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行 class MyThread implements Runnable{//实现 Runnable 接口 pu 阅读全文
posted @ 2020-04-15 21:35 那些年的代码 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 一、锁种类 偏向锁 因为经过HotSpot的作者大量的研究发现,大多数时候是不存在锁竞争的,常常是一个线程多次获得同一个锁,因此如果每次都要竞争锁会增大很多没有必要付出的代价,为了降低获取锁的代价,才引入的偏向锁。 轻量级锁 轻量级锁考虑的是竞争锁对象的线程不多,而且线程持有锁的时间也不长的情景。因 阅读全文
posted @ 2020-04-15 09:16 那些年的代码 阅读(6279) 评论(0) 推荐(0) 编辑
摘要: 一张图读懂非公平锁与公平锁 线程的挂起 线程的挂起操作实质上就是线程进入"非可执行"状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。 线程挂起后,可以通过重新唤醒线程来使之恢复运行。 cpu分配的线程片非常的短、同时也非常珍贵。线程的挂起可以避免资源的浪费。 挂 阅读全文
posted @ 2020-04-15 08:29 那些年的代码 阅读(1251) 评论(0) 推荐(0) 编辑
摘要: 在Java并发编程中,公平锁与非公平锁是很常见的概念,ReentrantLock、ReadWriteLock默认都是非公平模式,非公平锁的效率为何高于公平锁呢?究竟公平与非公平有何区别呢? 首先先简单从名字上来理解,公平锁就是保障了多线程下各线程获取锁的顺序,先到的线程优先获取锁,而非公平锁则无法提 阅读全文
posted @ 2020-04-15 08:24 那些年的代码 阅读(587) 评论(0) 推荐(1) 编辑
摘要: 如果一组进程中每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。 举例来说:有两个进程A和B,A持有资源a等待b资源,B持有资源b等待a资源,两个进程都在等待另一个资源的同时不释放资源,就形成死锁。 形成死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程 阅读全文
posted @ 2020-04-15 08:07 那些年的代码 阅读(1316) 评论(0) 推荐(0) 编辑