Thread常用方法的使用(二)中

简介: Thread常用方法的使用(二)

五. 守护线程 setDaemon()


守护线程指的就是, 即使 Main 线程结束了, 此线程仍然会继续运行。


五.一 设置守护线程


  @Test
    public void read3Test() throws Exception{
        Read3Runnable readRunnable=new Read3Runnable();
        Thread thread=new Thread(readRunnable);
        System.out.println("判断是否启动:"+thread.isAlive());
        System.out.println("是否是守护线程:"+thread.isDaemon());
        //在开启之前设置
        thread.setDaemon(true);
        thread.start();
        System.out.println("是否启动:"+thread.isAlive());
        System.out.println("是否是守护线程:"+thread.isDaemon());
    }
    class Read3Runnable implements  Runnable{
        @Override
        public void run() {
            System.out.println("获取线程的名称:"+Thread.currentThread().getName());
        }
    }


运行程序,控制台打印输出:


20200619163121420.png


五.二 守护线程


@Test
    public void daemonTest() throws Exception{
        DaemonRunnable daemonRunnable=new DaemonRunnable();
        Thread thread=new Thread(daemonRunnable);
        //先不是守护线程
        //启动
       // thread.setDaemon(true);
        thread.start();
    }
   static class DaemonRunnable implements  Runnable{
        @Override
        public void run() {
            //死循环,会一直执行。 
            for(;;){
                System.out.println("我扣");
            }
        }
    }


此时运行, ,则运行一段时间之后,结束运行


20200619163133576.png


如果将注释去掉,设置成守护线程的话,则会一直打印输出。


20200619163138872.png


六. 线程的状态 State


线程的状态有以下几种:


1.NEW 尚未启动的线程处于此状态。

2.RUNNABLE 在Java虚拟机中执行的线程处于此状态。

3.BLOCKED 被阻塞等待监视器锁定的线程处于此状态。

4.WAITING 正在等待另一个线程执行特定动作的线程处于此状态。

5.TIMED_WAITING 正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。

6.TERMINATED 已退出的线程处于此状态。


   @Test
    public void readStateTest() throws Exception{
        ReadStateRunnable readRunnable=new ReadStateRunnable();
        Thread thread=new Thread(readRunnable);
         Thread.State state=thread.getState();
        System.out.println("开启前状态:"+state);
        thread.start();
        state=thread.getState();
        System.out.println("开启后状态:"+state);
    }
    class ReadStateRunnable implements  Runnable{
        @Override
        public void run() {
            System.out.println("获取线程的名称:"+Thread.currentThread().getName());
        }
    }


运行程序,控制台打印输出:


20200619163149422.png


七. 线程优眠 sleep


会暂停时间。


 //线程的休眠
    @Test
    public void sleepTest(){
        SleepRunnable readRunnable=new SleepRunnable();
        Thread thread=new Thread(readRunnable);
        thread.start();
        //休眠5秒, 保证后面的先不执行。
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("休眠结束,运行成功");
    }
    class SleepRunnable implements  Runnable{
        @Override
        public void run() {
            try {
                //暂时3秒后才输出内容。
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("输出线程名称:"+Thread.currentThread().getName());
        }
    }


20200619163157404.png



相关文章
|
8月前
|
Java 调度
Thread常用方法
Thread常用方法
41 0
|
9月前
Thread 类的基本用法
比较推荐:使用 lambda 表达式创建线程的时候不用重写 run 方法。 不需要显式重写run方法的原因是因为线程的目标方法已经在Lambda表达式中定义了。Lambda表达式是一种用于创建匿名函数的语法糖,它可以将一个方法(或一段代码块)包装为一个函数对象。当您使用Lambda表达式创建线程时,Lambda表达式的内容会被视为线程执行的任务,这个任务会自动成为run方法的实现。
41 0
|
9月前
|
Java 调度
Thread类的方法
Thread类的方法
27 0
|
10月前
|
调度
Thread 类的基本方法
Thread 类的基本方法
57 0
|
10月前
测试Thread中的常用方法
测试Thread中的常用方法
36 0
|
11月前
Thread类的基本用法
Thread类的基本用法
|
安全 Java API
【JavaEE】认识线程&Thread类及常用方法&线程状态(一)
【JavaEE】认识线程&Thread类及常用方法&线程状态
【JavaEE】认识线程&Thread类及常用方法&线程状态(一)
|
安全 Java 调度
【JavaEE】认识线程&Thread类及常用方法&线程状态(二)
【JavaEE】认识线程&Thread类及常用方法&线程状态
【JavaEE】认识线程&Thread类及常用方法&线程状态(二)