Join,sleep,yield,守护线程

package com.fh.interview;

/**
 * join测试
 *
 *
 * sleep和wait方法的区别
 *
 * 1、sleep()方法是Thread的静态方法,而wait是Object实例方法
   2、wait()方法必须要在同步方法或者同步块中调用,也就是必须已经获得对象锁。
     而sleep()方法没有这个限制可以在任何地方种使用。
     另外,wait()方法会释放占有的对象锁,使得该线程进入等待池中,
     等待下一次获取资源。而sleep()方法只是会让出CPU并不会释放掉对象锁;
   3、sleep()方法在休眠时间达到后如果再次获得CPU时间片就会继续执行,
      而wait()方法必须等待Object.notift/Object.notifyAll通知后,
      才会离开等待池,并且再次获得CPU时间片才会继续执行


    yield方法:
    一旦執行,让出cpu时间,再下一次竞争中获取时间片,继续执行
    让出的cpu时间只能分配给相同优先级的线程
 *
 * @author
 * @create 2018-05-27 下午3:48
 **/
public class JoinDemo {

    public static void main(String[] args) {
        Thread preThread = new Thread();
        for (int i=1;i<10;i++){
            Thread currentThread = new JoinThread(preThread);
            currentThread.start();
            preThread=currentThread;
        }



    }

    static class JoinThread extends Thread{

        private Thread thread;

        public JoinThread(Thread thread){
            this.thread=thread;
        }

        @Override
        public void run() {
            try {
                thread.join();
                System.out.println("thread name:"+thread.getName());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
View Code
package com.fh.interview;

/**
 * @author
 * @create 2018-05-27 下午4:07
 **/
public class DaemonDemo {

    public static void main(String[] args) {
        Thread daemo = new Thread(){
            @Override
            public void run() {
                while (true){
                    try {
                        System.out.println("I am alive");
                        Thread.sleep(500);
                    }catch (Exception e){
                        e.printStackTrace();
                    }finally {
                        System.out.println("finally block");
                    }
                }
            }
        };

        daemo.setDaemon(true);
        daemo.start();
        try {
            Thread.sleep(800);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/nihaofenghao/p/9096363.html