package seday08.thread;
/**
* @author xingsir
* 守护线程又称为后台线程,默认创建出来的线程都是普通线程, 守护线程需要通过调用线程方法:setDaemon(boolean on)来进行设置。
* 守护线程使用上与普通线程没有区别,但是在结束时机上有一个 不同之处:进程结束时,所有正在运行的守护线程都会被强制停止。
* 而进程结束:当一个进程中所有的普通线程结束时进程结束
* 我们也可以将某些会一致运行的任务,并且当主要业务执行完毕 后可以跟着一同结束的就都放在守护线程上运行即可。
*/
public class DaemonThreadDemo {

public static void main(String[] args) {
//
Thread alin =new Thread() {
public void run() {
for(int i=0;i<6;i++) {//循环6次,跑6圈
System.out.println("alin跑"+i+"圈");//打印圈数
try {
Thread.sleep(1000);//设置阻塞指定的10000毫秒
} catch (InterruptedException e) {

}
}
System.out.println("alin:我跑完了....");
System.out.println("结束!");//观察marck也结束了
}
};
Thread marck = new Thread() {
public void run() {
while(true) {//这里设置为一直循环下去,也就是marck会一直跑
System.out.println("marck跟一圈");
try {
Thread.sleep(1000);//设置阻塞指定的10000毫秒
} catch (InterruptedException e) {
}
}
}
};
alin.start();//启动线程要调用start

//线程启动前进行设置
marck.setDaemon(true);//设置为守护线程,此时若alin跑完,marck也跟着跑完,

marck.start();//启动线程要调用start

}

}

守护线程,需要通过调用线程方法:setDaemon(boolean on)来进行设置的更多相关文章

  1. Java里一个线程两次调用start()方法会出现什么情况

    Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常,多次调用start被认为是编程错误. 如果业务需要线程run中的代码再 ...

  2. java线程基础巩固---线程生命周期以及start方法源码剖析

    上篇中介绍了如何启动一个线程,通过调用start()方法才能创建并使用新线程,并且这个start()是非阻塞的,调用之后立马就返回的,实际上它是线程生命周期环节中的一种,所以这里阐述一下线程的一个完整 ...

  3. java多线程并发(二)--线程的生命周期及方法详解

    上篇随笔介绍了线程的相关基础知识以及新启线程的几种方法,本片将继续介绍线程的生命周期及方法详解. 一.线程的生命周期 在Thread代码中,线程的状态被分为6种 public enum State { ...

  4. Java 多线程(三)—— 线程的生命周期及方法

    这篇博客介绍线程的生命周期. 线程是一个动态执行的过程,它也有从创建到死亡的过程. 线程的几种状态 在 Thread 类中,有一个枚举内部类: 上面的信息以图片表示如下: 第一张图: 第二张图:把等待 ...

  5. 同一个线程多次调用start()会出现的问题

    结果: 线程首先会运行一次,然后抛出java.lang.IllegalThreadStateException异常. 根据控制台的异常信息,定位到Thread.java的第708行,也就start() ...

  6. [深入学习C#]C#实现多线程的方法:线程(Thread类)和线程池(ThreadPool)

    简介 使用线程的主要原因:应用程序中一些操作需要消耗一定的时间,比如对文件.数据库.网络的访问等等,而我们不希望用户一直等待到操作结束,而是在此同时可以进行一些其他的操作.  这就可以使用线程来实现. ...

  7. 线程的start和run方法的区别

    回到这个问题,可以用源码的角度去回答,这样会让面试官对有更好的印象 ------>如果直接调用run方法的话,所执行的线程是main线程.调用start方法的话,会新建一个子线程,去执行run方 ...

  8. C#实现多线程的方法:线程(Thread类)和线程池(ThreadPool)

    简介 使用线程的主要原因:应用程序中一些操作需要消耗一定的时间,比如对文件.数据库.网络的访问等等,而我们不希望用户一直等待到操作结束,而是在此同时可以进行一些其他的操作.  这就可以使用线程来实现. ...

  9. Java创建线程后,调用start()方法和run()的区别

    1) start方法: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码.通过调用Thread类的start()方法来启动一个线程,这时此 ...

随机推荐

  1. python+selenium +unittest生成HTML测试报告

    python+selenium+HTMLTestRunner+unittest生成HTML测试报告 首先要准备HTMLTestRunner文件,官网的HTMLTestRunner是python2语法写 ...

  2. day 07 复习总结

    今日主要内容 1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 对应的是split () 表示把字符串变成列表.  ()里面为分隔符,不写默认为空格分隔 1.吧 2. ...

  3. Crontab爬虫定时执行

  4. Java基础IO类之缓冲流

    首先要明确一个概念: 对文件或其他目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处是:能够高效的读写信息,原理是先将数据先缓冲起来,然后一起写入或者读取出来. 对于字节: BufferedInp ...

  5. 【Android - 自定义View】之自定义九宫格手势解锁控件

    首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 LockView ,继承自View类: (2)这个自定义View实现了应用中常见的九宫格手势解锁功能,可以用于保证应用安全: ( ...

  6. 在可插拔settings的基础上加入类似中间件的设计

    在可插拔settings的基础上加入类似中间件的设计 settings可插拔设计可以看之前的文章 https://www.cnblogs.com/zx125/p/11735505.html 设计思路 ...

  7. docker下安装测试环境estuntest

    1.基础知识: docker pull centos   //从云上下载centos系统到本地服务器 docker images   //查看镜像docker rmi 镜像id   //删除镜像 do ...

  8. 第五章 Unity中的基础光照(2)

    目录 1. Unity中的环境光和自发光 2. 在UnityShader中实现漫反射光照模型 2.1 实践:逐顶点光照 2.2 实践:逐像素光照 2.3 半兰伯特模型 1. Unity中的环境光和自发 ...

  9. 挑战10个最难的Java面试题(附答案)【下】【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  10. Pycharm常见快捷键

    Ctrl+/注释(取消注释)选择的行 Shift + Enter开始新行 Ctrl + Enter智能换行 TAB Shift+TAB缩进/取消缩进所选择的行 Ctrl + Alt + I自动缩进行 ...