Loading

Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数

Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数

学习了:http://www.importnew.com/14958.html 膜拜一下

源码膜拜:

Thread.yield()没准,顺序输出不一定;

package com.stono.thread;

public class YieldExample {
    public static void main(String[] args) {
        Thread producer = new Producer();
        Thread consumer = new Consumer();
        producer.setPriority(Thread.MIN_PRIORITY);
        consumer.setPriority(Thread.MAX_PRIORITY);
        producer.start();
        consumer.start();
    }
}

class Producer extends Thread{
    @Override
    public void run() {
        for(int i=0;i<5;i++){
            System.out.println("I am Producer: Procuded Item ============="+ i);
            Thread.yield();
        }
    }
}

class Consumer extends Thread{
    @Override
    public void run() {
        for(int i=0;i<5;i++){
            System.out.println("I am consumer: Consumed Item "+i);
            Thread.yield();
        }
        
    }
}

Join表示要等待当前线程,可以指定等待的毫秒数;

package com.stono.thread;

import java.util.concurrent.TimeUnit;

public class JoinExample {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(new Runnable() {
            public void run() {
                System.out.println("First task started");
                System.out.println("Sleeping for 2 seconds");
                try {
                    //Thread.sleep(2000);
                    TimeUnit.SECONDS.sleep(2);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out.println("First task complete");
            }
        });
        
        Thread t1 = new Thread(new Runnable() {
            public void run() {
                System.out.println("Second task completed");
            }
        });
        
        t.start();
        t.join();
        // t.join(100); // 这个表示等待100毫秒
        t1.start();
    }
}

 

posted @ 2018-01-24 15:11  stono  阅读(160)  评论(0编辑  收藏  举报