JAVA 并发
文章平均质量分 60
java并发知识学习
zjsxxzh
这个作者很懒,什么都没留下…
展开
-
如何避免死锁
避免死锁主要有 3种方式加锁顺序加锁时限死锁检测加锁顺序一个线程如果要获取多个锁,必须按照一定的顺序去获取,比如要获取A B C 三把锁,我们规定,必须获取到了 AB 两把锁,才能去获取 C锁举个例子 现在有两个线程 都要去获取 ABC 三把锁然后 1号 线程 获取到了 A 和 B 两把锁2号 线程获取了 C锁于是 1号线程在等待 2号线程释放锁C锁2号线程在等待 ...原创 2019-05-28 10:20:34 · 3465 阅读 · 1 评论 -
自己实现可重入锁
什么是可重入锁本章的代码在>reentlock 包下假设现在有一个线程A 他获取了锁,然后他再一次去尝试获取锁,如果能成功,就说这个锁是可以重入的,在java中 ReentrantLock.class就是一个可重入的锁,关于这个类的源码解析,将在后面的章节讲到,现在我们看一下一个可重入锁的基本使用。使用ReentrantLock首先我们写一个简单的例子,这个例子是线程不安全的:...原创 2018-12-04 23:07:46 · 421 阅读 · 0 评论 -
线程基础知识——线程的挂起与恢复
CPU的时间片十分的珍贵,挂起无用的暂时不用的线程,可以节约系统的资源。被废弃的suspend关于挂起的方式我们首先讲一下被废弃的方法,suspend 和 resume ,他们被废弃的原因在于,suspend使用不当会造成死锁,下面通过一个例子来证明一下。/** * 证明 suspend 方法可能造成死锁 */public class SuspendDemo implements Ru...原创 2018-11-10 10:34:07 · 1186 阅读 · 0 评论 -
java 线程生命周期
线程的生命周期可以通过查看Thread 的源码来看。Thread这个类中有一个 State 的枚举类,其中定了了线程的6种状态下面对这几个状态做一一介绍状态名解释NEW线程创建完毕但是还么有启动,也就是一个线程对象刚被 new 出来 但是还没有去调用他的 start() 方法RUNNABBLE线程正在运行TERMINATED线程终止,也就是一个线程结束了...原创 2018-11-06 10:57:48 · 151 阅读 · 0 评论 -
如何创建线程
创建线程的方式有很多种,下面我们通过实际的例子来一一的讲解:1. 继承Thread类我们可以通过自定义一个类,去继承Thread 类,并重写其中的 run() 方法,来实现一个线程示例代码代码位置:howToCreateNewThread/Demo1.javapublic class Demo1 extends Thread { @Override public void...原创 2018-11-08 10:44:23 · 456 阅读 · 0 评论