首页 > 编程语言 > 详细

线程中一些常用方法的分析

时间:2016-05-08 23:56:09      阅读:440      评论:0      收藏:0      [点我收藏+]

join() :

在一个线程中调用另一个线程的join(),则当前线程阻塞,让另一个线程先执行后,当前才执行.   根优先级无关.
从某种意义上来说,要两个线程都执行这个方法才有作用

      

[java] view plain copy
 
 技术分享技术分享
  1. package Test1;  
  2.   
  3. public class test7 {  
  4.   
  5.     public static void main(String[] args) throws InterruptedException {  
  6.         MyThread1 mt=new MyThread1();  
  7.         MyThread mt1=new MyThread();  
  8.         Thread t=new Thread(mt);  
  9.         Thread t1=new Thread(mt1);  
  10.         t.start();  
  11.         t.join();  
  12.         t1.start();  
  13.         t1.join();  
  14.           
  15.   
  16.     }  
  17.   
  18. }  
  19.   
  20.  class MyThread1 implements Runnable{  
  21.      int i=1;  
  22.     @Override  
  23.     public void run() {  
  24.         while(true && i<=10){  
  25.             try {  
  26.                 Thread.sleep(1000);  
  27.             } catch (InterruptedException e) {  
  28.                 e.printStackTrace();  
  29.             }  
  30.             i++;  
  31.             System.out.println("This is Thread");  
  32.         }  
  33.           
  34.           
  35.     }  
  36.       
  37. }  

 

 

yeild() :

这个方法的作用就是:暂停当前正在执行的线程对象,并执行其他线程 ,和sleep,join方法有点类似

yield与sleep的区别:
1. sleep给其它线程运行的机会,但不考虑其它线程的优先级;但yield只会让位给相同或更高优先级的线程;
2. sleep有异常, yield没有
3.  当线程执行了sleep方法后,将转到阻塞状态,而执行了yield方法之后,则转到就绪状态;




yield与join的区别:
1. yield是静态方法, join是实例方法
2. yield只会让位给相同或更高优先级的线程, join无优先级无关

 

 

[java] view plain copy
 
 技术分享技术分享
    1. package Test1;  
    2.    
    3. public class test8  
    4. {  
    5.    public static void main(String[] args)  
    6.    {  
    7.       Thread producer = new Producer();  
    8.       Thread consumer = new Consumer();  
    9.    
    10.       producer.setPriority(Thread.MIN_PRIORITY); //Min Priority  
    11.       consumer.setPriority(Thread.MAX_PRIORITY); //Max Priority  
    12.    
    13.       producer.start();  
    14.       consumer.start();  
    15.    }  
    16. }  
    17.    
    18. class Producer extends Thread  
    19. {  
    20.    public void run()  
    21.    {  
    22.       for (int i = 0; i < 5; i++)  
    23.       {  
    24.          System.out.println("I am Producer : Produced Item " + i);  
    25.          Thread.yield();  
    26.       }  
    27.    }  
    28. }  
    29.    
    30. class Consumer extends Thread  
    31. {  
    32.    public void run()  
    33.    {  
    34.       for (int i = 0; i < 5; i++)  
    35.       {  
    36.          System.out.println("I am Consumer : Consumed Item " + i);  
    37.          Thread.yield();  
    38.       }  
    39.    }  
    40. }  

线程中一些常用方法的分析

原文:http://www.cnblogs.com/yaobolove/p/5472131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!