1、setDeamon

设置线程为后台运行的函数

public class SetDaemon
{public static void main(String[] args) throws InterruptedException{Thread tt=new Thread(new ThreadTest());tt.setDaemon(true);                     //设置程序为后台运行tt.start();Thread.sleep(3);}
}class ThreadTest implements Runnable
{public void run(){while(true){System.out.println(Thread.currentThread().getName()+" is running...");    }}
}

可见当父线程后台运行的线程自动结束。

2、join

强制CPU执行某个线程

public class SetDaemon
{public static void main(String[] args) throws InterruptedException{Thread tt=new Thread(new ThreadTest());tt.start();for(int i=0;i<10;i++){if(i==5){tt.join();}System.out.println(Thread.currentThread().getName()+i+" is running...");}}
}class ThreadTest implements Runnable
{public void run(){for(int i=0;i<5;i++){System.out.println(Thread.currentThread().getName()+i+" is running...");  }}
}

3、interrupt

中断线程

public class SetDaemon
{public static void main(String[] args) throws InterruptedException{Thread tt=new Thread(new ThreadTest());tt.start();Thread.sleep(2000);System.out.println("The subthread is interupted in the main thread.");tt.interrupt();tt.join();System.out.println("The main thread is over.");}
}class ThreadTest implements Runnable
{public void run(){try{System.out.println("The subthread is sleeping...");Thread.sleep(200000);}catch(Exception e){e.printStackTrace();System.out.println("The subthread is interupted.");return;}System.out.println("The subthread is over.");}
}

注意:这里的线程中断和通常所讲的硬件中断并不是同一个概念,硬件中断是...(这个就不要讲啦),这里的中断可以理解成线程的状态被设置成了中断状态(即挂起了一个小旗,告诉其它线程‘哥处于中断状态’,禁止某些操作),此时执行某些函数会触发异常,被中断的线程进入到异常处理代码段。

请仔细体会以下代码:

public class SetDaemon
{public static void main(String[] args) throws InterruptedException{Thread tt=new Thread(new ThreadTest());tt.start();Thread.sleep(5);System.out.println("The subthread is interupted in the main thread.");tt.interrupt();tt.join();System.out.println("The main thread is over.");}
}class ThreadTest implements Runnable
{public void run(){try{while(true){System.out.println(Thread.currentThread().getName()+" is running...");Thread.sleep(1);}}catch(Exception e){e.printStackTrace();System.out.println("The subthread is interupted.");return;}//System.out.println("The subthread is over.");}
}

可以使用isInterupt()查看线程是否被中断。

java多线程控制函数setDaemon,join,interupt相关推荐

  1. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  2. Java多线程神器:join使用及原理

    转载自 Java多线程神器:join使用及原理 join() join()是线程类 Thread的方法,官方的说明是: Waits for this thread to die. 等待这个线程结束,也 ...

  3. JAVA多线程基础篇-join方法的使用

    1.概述 join()是Thread类中的一个方法,它的作用是将当前线程挂起,等待其他线程结束后再执行当前线程,即当前线程等待另一个调用join()方法的线程执行结束后再往下执行.通常用于在main主 ...

  4. java多线程wait notify join

    wait notify 几个注意点: wait 与 notify/notifyAll 方法必须在同步代码块中使用,即要先对调用对象加锁. 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进 ...

  5. 【Java】Java多线程神器:join使用及原理

    1.概述 转载:http://www.javastack.cn/article/2017/java-thread-join/ join() join()是线程类Thread的方法,官方的说明是: Wa ...

  6. JAVA多线程:守护线程 setDaemon全方位剖析| 守护线程是线程吗 |thread.isAlive()反思(五)

    前言 本文目的,通过短小精悍的实例,让你在最短时间,全面揭晓 thread.setDaemon(true)守护线程的使用,及其使用场景.一看就懂,一学就会! 概述 守护线程的作用 用来让其(这里暂称之 ...

  7. Java多线程:synchronized | Volatile 和Lock和ReadWriteLock多方位剖析(一)

    前言 本文站在多线程初中级学习者的角度,较为全面系统的带你一起了解多线程与锁相关的知识点.带你一起解开与锁相关的各种概念.用法.利弊等.比如:synchronized.Volatile.Lock.Re ...

  8. java 多线程 一个博客

    http://blog.csdn.net/a352193394/article/category/2563875 Java多线程之~~~线程安全容器的非阻塞容器 在并发编程中,会经常遇到使用容器.但是 ...

  9. JAVA多线程:sleep(0)、sleep(1)、sleep(1000)的区别(四)

    前言 讨论这个问题前,需要先了解以下知识点! 1.等待/阻塞队列(blocked)中的线程不参与cpu竞争,就绪队列(runable)中的线程才会参与cpu竞争. 2.CPU竞争策略有多种,Unix使 ...

最新文章

  1. 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录
  2. html语言表格背景颜色,HTML_HTML表格标记教程(36):表头的背景色属性BGCOLOR,TH标记用于设定表格中某 - phpStudy...
  3. Java 中 StringBuilder 在高性能用法总结
  4. java gui 层次结构_javaGUI教学图形界面的层次结构.ppt
  5. 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
  6. ASP.NET MVC与RAILS3的比较
  7. 将字符串转换为数组_LeetCode 树 108.将有序数组转换为二叉搜索树
  8. 初学web前端开发,你必要了解的基本概念与工具技术
  9. Linux服务器傻瓜安装(图解下)(4)
  10. 文本分类和意图识别调研思考
  11. 第三章 Docker 入门
  12. js-JavaScript常见的创建对象的几种方式
  13. 百度cpc联盟的漏洞?还是内鬼?
  14. 基于LabVIEW的轴承信号采集分析仪的设计
  15. php 中文字,完善解决截取中文汉字不乱码-PHP字符串函数(支持utf8、GBK、GB2312)
  16. 北京科技大学与北京工业大学计算机,请问北京工业大学和北京科技大学2010年计算机专业研究生的录取分数线是多少?谢谢!...
  17. 星巴克中国咖啡创新产业园正式动工,追加项目总投资至近11亿元
  18. 发票管理系统java_企业发票管理系统.doc
  19. 长期戴耳机的危害有哪些?耳机种类的选择很重要
  20. 健康的荷斯坦奶牛-USACO-USACO阶梯-第2章.更大的挑战

热门文章

  1. 网站证书(cer)的安装与卸载
  2. Jmeter 安装后配置环境变量
  3. arcgis10.2 卡在loading document的问题
  4. phpqrcode 生成带logo的二维码
  5. 自动数据增强AutoAugment
  6. 我被中国计算机教育的现实打败了
  7. CentOS手动安装配置LNMP环境
  8. 【R语言】多项式逻辑回归logistic
  9. JS转json对象为格式化json字符串
  10. C# EmguCV 修改图片对比度、亮度