打卡百天计划第一天-线程的构造函数、守护线程

线程的构造

在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例.Thread类的构造方法被重载了八次,构造方法如下:
————————————————
public Thread( );
public Thread(Runnable target);
public Thread(String name);
public Thread(Runnable target, String name);
public Thread(ThreadGroup group, Runnable target);
public Thread(ThreadGroup group, String name);
public Thread(ThreadGroup group, Runnable target, String name);
public Thread(ThreadGroup group, Runnable target, String name, long stackSize);
————————————————

守护线程

守护线程是一类比较特殊的线程,一般用于处理一些后台的工作,比如jdk的
垃圾回收线程。

1.设置守护线程很简单,调用setDaemon方法即可,true代表守护线程,false代表正常线程。
2.isDaemon方法可以判断一个线程是否是守护线程。
3.setDaemon方法只能在线程启动之前才能生效,一个线程已经死亡再调用setDaemon 会抛出IllegalThreadStateException。

package day0518;

import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.util.concurrent.TimeUnit;

/**
 * @author liw
 * @date 2020-06-16
 */
public class Demo1 {
    public static void main(String[] args) throws InterruptedException {
       Thread thread = new Thread(()->{
           while (true){
               try{
                   TimeUnit.SECONDS.sleep(1);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }finally {
                   System.out.println("守护线程运行中");
               }
           }
       });
       thread.setDaemon(true);
       thread.start();
       TimeUnit.SECONDS.sleep(20);
        System.out.println("主线程结束");

    }
}




执行结果 20秒后主线程结束 随之守护线程也结束

守护线程运行中
守护线程运行中
守护线程运行中
守护线程运行中
主线程结束
Process finished with exit code 0

为什么会输出四次“守护线程运行中” ?。

这是因为main线程先启动了,守护线程后于它获得执行权,守护线程执行第一次时
其实main线程等待时间大于一秒,守护线程等待时间等于一秒。
故最后守护线程刚打印第四次还没来得及到第五个一秒的等待时
main线程已经结束,此时守护线程随之结束。

实验将5改成2,多执行几次你会发现有时输出两次,有时输出一次。
为啥呢?思考下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个双鱼座的测开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值