java多线程总结三:sleep()、join()、interrupt()示例
2024-08-29 10:44:34
这是一个来自《java编程思想上的示例》
- package demo.thread;
- /**
- *sleep()是静态方法,是属于类的,作用是让当前线程阻塞
- *join()是使线程同步,如在某个线程里调用t.join()表示t线程执行完再执行当前线程
- *interrupt()给线程设定一个标志表示该线程已被中断,但在异常捕获时将清理这个标志
- *所以在catch子句中,该标志为false
- */
- public class SleepJoinDemo {
- public static void main(String[] args) {
- Sleeper sleep1 = new Sleeper("sleep1", 1500);
- Sleeper sleep2 = new Sleeper("sleep2", 1500);
- Joiner join1 = new Joiner("join1", sleep1);
- Joiner join2 = new Joiner("join2", sleep1);
- sleep2.interrupt();
- }
- }
- class Sleeper extends Thread {
- // 可以传参设定睡眠时间
- private int sleepTime;
- public Sleeper(String name, int sleepTime) {
- super(name);
- this.sleepTime = sleepTime;
- start();// 在构造方法中启动
- }
- @Override
- public void run() {
- try {
- sleep(sleepTime);
- } catch (InterruptedException e) {
- System.out.println(getName() + " was interrupted.\n"
- + "isInterrupted():" + isInterrupted());
- return;
- }
- System.out.println(getName() + " has awakened");
- }
- }
- class Joiner extends Thread {
- private Sleeper sleeper;
- public Joiner(String name, Sleeper sleeper) {
- super(name);
- this.sleeper = sleeper;
- start();
- }
- public void run() {
- try {
- sleeper.join();//合并,异步变同步
- } catch (InterruptedException e) {
- System.out.println("interrupted");
- }
- System.out.println(getName() + " join completed");
- }
- }
最新文章
- Maven中的dependencyManagement 意义
- DES根据键值加密解密
- ehcache的介绍和使用
- 虚拟化技术比较 PV HVM
- GIT之一 起步篇
- android如何实现开机自动启动Service或app
- Linux device tree 简要笔记
- [Angular 2] Generate Angular 2 Components Programmatically with entryComponents &; ViewContainerRef
- Java中main函数参数String args[] 和 String[] args 区别
- 【基本计数方法---加法原理和乘法原理】UVa 11538 - Chess Queen
- 【HDOJ】2385 Stock
- ios常用动画
- MySQL单列索引和组合索引的区别介绍
- sqlite数据库方言配置
- 利用gsoap工具,通过wsdl文件生成webservice的C++工程文件
- 检索 COM 类工厂中 CLSID 为 {00021A20-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005
- [Winform]基于Emgu.CV人脸识别
- complexity_action
- 洛谷P1168中位数
- shell中的字符串操作和数学运算
热门文章
- python 使用@property
- [OC Foundation框架 - 22] 集合的内存管理
- 让UILabel具有链接功能,点击后调用safari打开网址
- 偶遇mysql外键不好使
- 【Stage3D学习笔记续】真正的3D世界(二):显示模型
- mysql之数据库备份与恢复
- winform 多线程中ShowDialog()步骤无效的解决办法
- JavaScript Source Map 详解
- JS 添加千分位,测试可以使用
- Codeforces Round #324 (Div. 2) E. Anton and Ira 贪心