随笔分类 -  线程和锁

摘要:什么是线程间通信 线程间通信机制 阅读全文
posted @ 2019-10-23 22:17 海棠--依旧 阅读(199) 评论(0) 推荐(0)
摘要:场景一 在我们面试中经常会有这么一个场景,就是我们用线程A输出“A”字符,有线程B输出“B”字符,交替进行,要求A线程执行完任务输出:“A线程打印完了”,B线程执行完任务输入:“B线程打印完了”,最后有主线程输出一句话“我打印完了”! 当你看到这个场景时,有点多线程经验的人肯定会感觉很容易,然后有可 阅读全文
posted @ 2019-10-23 22:06 海棠--依旧 阅读(8997) 评论(2) 推荐(0)
摘要:学习链接 Java并发教程 阅读全文
posted @ 2019-08-26 20:27 海棠--依旧 阅读(126) 评论(0) 推荐(0)
摘要:为什么要用线程池? 单独创建线程的缺点: a. 每次new Thread新建对象性能差。 b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。 创建线程池的优点: a. 重用存在的线程,减少对象创建、 阅读全文
posted @ 2019-05-11 16:16 海棠--依旧 阅读(4538) 评论(0) 推荐(0)
摘要:创建方式 继承Thread类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 实现Runnable接口 阅读全文
posted @ 2019-05-11 14:49 海棠--依旧 阅读(10793) 评论(0) 推荐(1)
摘要:基本介绍 synchronized是Java实现同步的一种机制,它属于Java中关键字,是一种jvm级别的锁。synchronized锁的创建和释放是此关键字控制的代码的开始和结束位置,锁是有jvm控制的创建和释放的,正是因为这一点,synchronized锁不需要手动释放,哪怕是代码出现异常,jv 阅读全文
posted @ 2019-02-21 16:34 海棠--依旧 阅读(1163) 评论(0) 推荐(0)
摘要:基本介绍 java.util.concurrent.locks是java1.5之后出现的一种锁实现方式,是一个接口。但是在这之前已经有一个同步机制的实现就是synchronized关键字,那为什么还要再出现一个LOCK接口呢?最主要的原因就是为了弥补synchronized使用中的不足。 synch 阅读全文
posted @ 2019-02-20 15:25 海棠--依旧 阅读(1423) 评论(0) 推荐(0)
摘要:线程状态 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。 3、运行状 阅读全文
posted @ 2018-03-21 16:42 海棠--依旧 阅读(1696) 评论(0) 推荐(0)
摘要:Java中实现锁的方式有多种,并且锁的分类也有很多,这篇文章会从锁分类方面简单介绍各分类的锁的特点。 公平锁和非公平锁 公平锁:就是很公平,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照锁请求的FI 阅读全文
posted @ 2018-03-12 13:07 海棠--依旧 阅读(974) 评论(0) 推荐(0)