thrown = x; throw x;
} catch (Error x) {
thrown = x; throw x;
} catch (Throwable x) {
thrown = x; throw new Error(x);
} finally {
afterExecute(task, thrown);
}
} finally {
task = ;
w.completedTasks++;
w.unlock;
}
}
completedAbruptly = false;
} finally {
processWorkerExit(w, completedAbruptly);
}
}
就是任务在并不只执行创建时指定的firstTask第一任务,还会从任务队列的中自己主动取任务执行,而且是有或者无时间限定的阻塞等待,以保证线程的存活 。
默认的是不允许 。
2.4 CountDownLatch和CyclicBarrier区别
countDownLatch是一个计数器,线程完成一个记录一个,计数器递减,只能只用一次 。
CyclicBarrier的计数器更像一个阀门,需要所有线程都到达,然后继续执行,计数器递增,提供Reset功能,可以多次使用 。
3. 多线程间通信的几种方式
提及多线程又不得不提及多线程通信的机制 。首先,要短信线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的 。我们来基本一道面试常见的题目来分析:
题目:有两个线程A、B,A线程向一个集合里面依次添加元素"abc"字符串,一共添加十次,当添加到第五次的时候,希望B线程能够收到A线程的通知,然后B线程执行相关的业务操作 。
3.1使用volatile关键字
package thread;
/**
*
* @author hxz
* @description 多线程测试类
* @version 1.0
* @data 2020年2月15日 上午9:10:09
*/
public class MyThreadTest {
public static void main(String[] args) throws Exception {
notifyThreadWithVolatile;
}
/**
* 定义一个测试
*/
private static volatile boolean flag = false;
/**
* 计算I++,当I==5时,通知线程B
* @throws Exception
*/
private static void notifyThreadWithVolatile throws Exception {
Thread thc = new Thread("线程A"){
@Override
public void run {
for (int i = 0; i < 10; i++) {
if (i == 5) {
flag = true;
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace;
}
break;
}
System.out.println(Thread.currentThread.getName + "====" + i);
}
}
};
Thread thd = new Thread("线程B") {
@Override
public void run {
while (true) {
// 防止伪唤醒 所以使用了while
while (flag) {
System.out.println(Thread.currentThread.getName + "收到通知");
System.out.println("do something");
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace;
}
return ;
}
}
}
};
thd.start;
Thread.sleep(1000L);
thc.start;
}
}
个人认为这是基本上最好的通信方式,因为A发出通知B能够立马接受并Do Something 。
原文链接:
***/weixin_44104367/article/details/104481510
推荐阅读
- rar解压工具哪个好 免费rar解压软件哪个好
- 忘记手机指纹解锁数字密码怎么处理掉
- 该怎样才能发表微博,为什么发的微博无法显示
- 电视机网络版和电视版有什么区别
- hwlal00是什么手机,华为hwl一al00是什么型号
- 影视大全该怎样才可以离线缓存
- 怎么给标注尺寸,ps怎么给中的物品标注尺寸大小
- 进口车查询是哪个网站,进口车从玻璃上怎么看是哪年款
- 黑云翻墨未遮山的下一句,黑云翻墨未遮山描绘的画面是什么?
