![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 92
A股慈善家
金融鬼才
展开
-
两种线程创建方式的区别
创建一个新的线程有两种方式,第一种方式为通过继承Thread类,并实现Thread类中的run()方法。第二种创建线程的方式是通过实现Runnable接口来创建一个新的线程。 下面总结一下两种创建线程方式的区别:从面向对象编程的角度来看:通过继承Thread类创建线程使用的是基于继承的技术,而第二种方式是当然就是给予组合的技术来实现的。由于组合相对于继承来说,类与类之间的耦合性更低,所以它也更加原创 2018-02-17 17:49:23 · 812 阅读 · 0 评论 -
线程的生命周期状态
线程的声明周期状态图如下: Java 线程的状态可以使用监控工具查看,也可以通过Thread.getState() 调用来获取。Thread.getState() 的返回值类型Thread.State 是一 个枚举类型( Enum)。Thread.State所定义的线程状态包括以下几种: NEW:一个已创建而未启动的线程处于该状态。由于一个线程实例只能够被启动一次,因此一个线程只可能...转载 2018-02-18 11:53:41 · 891 阅读 · 0 评论 -
ReentrantLock公平锁的获取和释放源码学习
ReentrantLock公平锁的测试代码如下: public static void main(String[] args) { ReentrantLock lock = new ReentrantLock(true);//创建一个公平锁 lock.lock(); try{ TimeUnit.SECONDS.slee...原创 2019-08-28 17:48:26 · 171 阅读 · 0 评论 -
ReentrantLock的await/signal机制源码学习
测试代码如下:public class ConditionTest { static ReentrantLock lock = new ReentrantLock(); //创建锁对象 static Condition condition = lock.newCondition(); //创建条件变量 public static void main(Str...原创 2019-08-29 20:37:42 · 2108 阅读 · 0 评论 -
ArrayBlockingQueue源码学习
ArrayBlockingQueue介绍ArrayBlockingQueue是采用数组实现的有界阻塞线程安全队列。如果向已满的队列继续塞入元素,将导致当前的线程阻塞。如果向空队列获取元素,那么将导致当前线程阻塞。ArrayBlockingQueue类的几个主要成员属性:final Object[] items; //用于存放队列元素的数组int takeIndex; //消费者取的元素的数...原创 2019-08-30 16:01:57 · 238 阅读 · 0 评论