Java线程几种常用方法解析

sleep:

sleep让当前线程休眠指定的时间。休眠完成后,状态转到就绪状态。

yield:  yield是放弃当前CPU资源,将CPU资源让给其他线程去使用,但放弃的时间不确定。

join:

大部分情况下,主线程启动了子线程,如果子线程需要完成大量复杂的运算,则主线程会先于子线程结束。但主线程如果需要在子线程运行完毕后使用子线程的结果,则必须在主线程中使用join,这样主线程会等待子线程结束,然后主线程再结束。

方法join,是使得所属线程对象x正常执行完run方法,而使当前线程z进行无限制阻塞,直到对象x结束后,再继续执行z后面的代码。

public class demo

{

   public static void main(String[] args) throws InterruptedException

   {

      Thread producer = new Producer();

      producer.start();

      producer.join();

      System.out.println("main end");

   }

}

class Producer extends Thread

{

   public void run()

   {

      for (int i = 0; i < 100000; i++)

      System.out.println("producer end");

         }

}

在以上案例中,当把producer.join()注释掉后,会先打印main end,再打印producer end。因为子线程运算复杂,所以主线程会先结束。而如果加上这一句,则主线程会等待producer线程的结束,主线程再销毁。也就是说,哪一个线程被调用,则必须等待该线程结束,调用的主线程才能继续执行下一步。

posted @ 2017-08-04 11:07  pastrytime  阅读(194)  评论(0编辑  收藏  举报