java学习笔记1018---线程的控制

后台线程:

 定义:在后体运行,为其他的线程提供服务的线程
 特征:如果所有的前台线程都死亡,后台线程会自动死亡。【当虚拟机中只剩下后  台线程时,程序就没有继续运行的必要了,所以虚拟机就退出了。】
 
 使用:调用Thread对象的setDaemon(true)方法可将指定线程设置成后台线程。
       
    *要将某个线程设置成后台线程,必须在该线程启动之前设置,即setDaemon(true)必须在start()方法之前调用。*
 
线程睡眠:sleep
让当前正在执行的线程暂停一段时间,并进入阻塞状态。
   调用Thread类的静态sleep方法 形式:static void sleep(long millis)
 
 
 
  
  
  
  
  1. public class TestSleep 
  2.     public static void main(String[] args) 
  3.     { 
  4.         for(int i = 0;i<100;i++) 
  5.         { 
  6.             System.out.println("当前时间:"new Date()); 
  7.             Thread.sleep(1000);  
  8.         }    
  9.     }    
线程的让步:yield
让当前正在执行的线程暂停,但不阻塞该线程,它只是将该线程转入就绪状态。yield只是让当前线程暂停一下,让系统的线程调度器重新调度一次。
 
 
  
  
  
  
  1. public class TestYield extends Thread 
  2.     public TestYield() 
  3.     {    
  4.     } 
  5.     public TestYield(String name) 
  6.     { 
  7.         super(name);     
  8.     }    
  9.     public void run() 
  10.     { 
  11.         for(int i =0;i<100;i++)  
  12.         { 
  13.             System.out.println(getName() + " " + i); 
  14.             if(i == 20
  15.             { 
  16.                 Thread.yield();  
  17.             }    
  18.         } 
  19.     } 
  20.     public static void main(String[] args) 
  21.     { 
  22.             TestYield ty1 = new TestYield("高级"); 
  23.             ty1.start(); 
  24.             TestYield ty2 = new TestYield("高级"); 
  25.           ty2.start(); 
  26.     } 
sleep方法和yield方法的区别:
1.sleep方法暂停当前线程后,会给其他线程执行机会,不会理会其他线程的优先级。但yield方法只会给优先级相同,或优先级更高的线程执行机会。
2.sleep方法会将线程转入阻塞状态,直到经过阻塞时间才会转入就绪状态。而yield不会将线程转于阻塞状态,它只是强制当前线程进入就绪状态。因此完全有可能某个线程调用yield方法暂停之后,立即再次获得处理器资源被执行。
3.sleep方法声明抛出了interruptedException异常,所以调用sleep方法时要么捕捉该异常,要么显示声明抛出该异常。而yield方法则没有声明抛出任何异常。
4.sleep方法比yield方法有更好的可移植性,通常不要依赖yield来控制并发线程的执行。
 
改变线程的优先级:
Thread 提供恶劣setPriority(int newPriority)和getPriority()方法来设置和返回指定线程的优先级。
其中setPriority方法的参数可以是一个整数,范围是1-10,也可以使用Thread类的三个静态常量:
MAX_PRIORITY:10
MIN_PRIORITY:1
NORM_PRIORITY:5

本文出自 “java程序猿的博客” 博客,转载请与作者联系!

你可能感兴趣的:(java)