04.join与interrupt
join加入
public class JoinDemo {
public volatile static int i = 0;
public static class AddThread extends Thread{
@Override
public void run() {
for (i=0;i<10000000;i++);
}
}
public static void main(String[] args) throws InterruptedException{
AddThread addThread = new AddThread();
addThread.start();
addThread.join();
System.out.println(i);
}
}
public class JoinDemo {
public static void main(String[] args) throws InterruptedException{
Thread threadA = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("child threadA over");
}
});
Thread threadB = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("child threadB over");
}
});
threadA.start();
threadB.start();
System.out.println("wait all thread over");
//等待子线程执行完毕
threadA.join();//主线程调用threadA的join()方法后被阻塞,等待threadA执行完毕
threadB.join();
System.out.println("all thread over");
//wait all thread over
//child threadA over
//child threadB over
//all thread over
Thread threadOne = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("threadOne begin run");
while (true){} //死循环
}
});
//获取主线程
final Thread mainThread = Thread.currentThread();
Thread threadTwo = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//中断主线程
mainThread.interrupt();
System.out.println("threadTwo begin run");
}
});
threadOne.start();
threadTwo.start();
threadOne.join();
//threadOne begin run
//threadTwo begin run
//Exception in thread "main" java.lang.InterruptedException
//在 threadOne 线程里面执行死循环,主线程调用 threadOne 的 join 方 法阻 塞 自己 等 待线程 threadOne 执行完毕,
// 待 threadTwo 休眠 ls 后会调用主线程的 interrupt() 方法设置主线程的中断标志,
// 从结果看在主线程中的 threadOne.join() 处会抛 出 InterruptedException 异常
}
}
04.join与interrupt的更多相关文章
- java多线程总结三:sleep()、join()、interrupt()示例
这是一个来自<java编程思想上的示例> package demo.thread; /** *sleep()是静态方法,是属于类的,作用是让当前线程阻塞 *join()是使线程同步,如在某 ...
- Java - 线程Join与interrupt
Java多线程系列--“基础篇”08之 join() 概要 本章,会对Thread中join()方法进行介绍.涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_ ...
- Java线程状态及 wait、sleep、join、interrupt、yield等的区别
Java中的线程状态(详见Java线程状态及转换-MarchOn): wait:Object类的实例方法,释放CPU执行权,进入等待状态,直到 被中断.被拥有该对象锁的线程唤醒(notify或not ...
- 多线程的join和interrupt
你可以在一个线程1里添加线程2对象thread的join方法来让线程1处于等待的状态 ,同时也可以调用thread.interrupt()来打断等待状态,此处注意 interrupt应在线程1开启st ...
- 多线程(二)Object类方法、线程的操作sleep(),join(),interrupt(),yield()
四.Object类简介 Object类是所有类的超类,之所以放在线程部分是因为其方法很多是和线程有关的.比如以下三个: wait()方法.wait(long timeout)和wait(long ti ...
- 多线程-join()方法
在很多情况下,主进程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束.这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据 ...
- Java:并发笔记-01
Java:并发笔记-01 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 1. 进程与线程 本章内容 进程和线程的概念 并行和并发的概念 线程基本应用 1.1 ...
- Java多线程总结(一)多线程基础
多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能.本文只是多线程细节.本质的总结,并无代码例子入门,不适合初学者理解.初学者学习多线程,建议一边看书.看博文,以便写代码尝试 ...
- 《Java多线程核心技术》读书摘要
Chapter1: 进程是操作系统管理的基本单元,线程是CPU调到的基本单元. 调用myThread.run()方法,JVM不会生成新的线程,myThread.start()方法调用两次JVM会报错. ...
随机推荐
- 在Eclipse中配置安卓的开发环境 (踩过的坑)
这个学期学校有门安卓程序设计课需要安装安卓开发环境. 一开始安装的是Andriod Studio,但是过程很坎坷很心酸,遇到各种各样的问题,最后还没有解决. 没办法决定用Eclipse配置安卓环境,虽 ...
- boost variant
Boost Variant resembles union. You can store values of different types in a boost::variant. 1. #incl ...
- 改计算机名导致 Oracle因目标主机或对象不存在
手贱修改了计算机名, 结果导致登陆oracle数据库报如下错误,一查资料,说是修改了计算机名导致的,需要进到oracle安装目录: \oracle\product\10.2.0\db_1\NETWOR ...
- 阿里云李刚:下一代低延时的直播CDN
在上周落幕帷幕的多媒体领域技术盛会——LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了<下一代低延时的直播CDN>技术分享.主讲人李刚,多年关注在CDN这 ...
- linux网络接口,struct ifreq struct ifconf结构
网络相关的ioctl请求的request参数及arg地址必须指向的数据类型如下表所示: 接口 SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFBRDADDR SI ...
- 08-图7 公路村村通(30 分)Prim
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...
- 数字电路的与门、或门、非门--FPGA--005
作者:young cc 链接:https://www.zhihu.com/question/23829080/answer/123791730来源:知乎著作权归作者所有,转载请联系作者获得授权. 数字 ...
- Unity Shader之模板测试
Unity Shader之模板测试 一沙一世界,一花一天堂 一.Stencil testing 渲染管线 当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,和深度 ...
- mysql 查询所有表以及对应的信息
https://www.cnblogs.com/ssslinppp/p/6178636.html use information_schema;selectengine,table_name,tabl ...
- vlc 学习网
http://capricasoftware.co.uk/#/projects/vlcj/tutorial