zoukankan      html  css  js  c++  java
  • 线程中一些常用方法的分析

    join() :

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

          

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    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
     
     在CODE上查看代码片派生到我的代码片
      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. }  
  • 相关阅读:
    国外插画等形式美术网址
    jquery对联广告
    国外优秀PS网站
    web前端开发工程师
    有关HTML+CSS需注意的一些问题
    公积金账户余额
    什么是CSS Float?
    5款影楼后期制作软件
    国外优秀设计网站推荐
    jQuery跟随屏幕滚动的层
  • 原文地址:https://www.cnblogs.com/yaobolove/p/5472131.html
Copyright © 2011-2022 走看看