并发
ScottePerk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java多线程 Future和FutureTask的使用和源码分析(全解析)
官方文档解释:Future表示一个异步计算的结果。并提供一些方法检测计算是否完成,等待完成,并取回数据。只有计算完成的时候,结果可以通过get方法获取。如果没有完成,则调用get方法的时候会阻塞。官方文档是这么写的,翻译起来有点奇怪。直接看源码更好理解,Future是一个接口,总共就5个方法。详细解释看注释。Future只是一个接口,他的一个最主要实现类是FutureTask。FutureTask实现了RunnableFuture,那么RunnableFuture接口又是什么呢?Runnable原创 2022-06-29 14:11:04 · 764 阅读 · 0 评论 -
Java多线程基础五 通过sleep防止CPU100%占用
在服务器中,会存在下面的while true方法,服务器需要一直接受请求,所以需要死循环一直运行着,如果没有添加sleep那么下面的代码会直接占用100%的cpu,导致别的应用没有执行权。这种情况叫做CPU空转如果加了sleep,哪怕sleep 1ms,cpu的占用率会降到3%左右(个人pc测试),总之就是会明显减低cpu使用率。while(true){ try { Thread.sleep(1); } catch (InterruptedException e) {原创 2022-04-19 02:17:19 · 2409 阅读 · 2 评论 -
Java多线程基础四 线程优先级之yield方法
yield单词是礼让的意思,是实现线程优先级的一种方式。线程调用yield会让出cpu的执行权,但别的线程不一定接受礼让。在cpu比较繁忙的时候效果明显,空闲的时候没什么影响。下面的例子,有A B两个线程,不断对count累加,B执行yield方法,B线程的count变量累加次数明显减少。没有yield方法的话,A B两个线程的累加次数差不多。/** * yield是礼让的意思,也就是让出线程cpu的执行权。 */public class YieldDemo1 { public stati原创 2022-04-19 01:53:58 · 1236 阅读 · 0 评论 -
Java多线程基础三 sleep的中断
在调用sleep方法的时候,我们需要try catch ,而catch的是InterruptedException这个异常,可以说这个异常就是sleep特定的异常。可以通过线程的interrupt方法手动打断。下面的代码在t1大约运行500ms的时候打断。/** * sleep的中断 */public class SleepDemo2 { public static void main(String[] args) { Thread t1 = new Thread("A")原创 2022-04-19 00:26:43 · 1527 阅读 · 0 评论 -
多线程基础一 线程的创建
方法一:直接使用Thread代码非常简单,开启三个线程输出线程自己的名称。/** * 创建线程方法一 */public class CreateThreadDemo1 { public static void main(String[] args) { Thread t1 = new Thread("A") { @Override public void run() { System.out.原创 2022-04-18 23:45:28 · 298 阅读 · 0 评论 -
精通多线程实战-CountDownLatch
万丈高楼平地起,要精通也要一步步开始。先来学习concurrent包下的CountDownLatch这个类。1.为什么先学这个类?答:实用。我觉得这个类在实际的项目中是很有用的。下面提出几个实际开发中经常遇到的问题,当然这些问题的解决方案是很多的,这里主要还是为了讲解CountDownLatch类的使用。可能存在更好的解决方案,但这里只提供CountDownLatch这种解决方案。...原创 2018-12-18 00:46:18 · 358 阅读 · 0 评论
分享