這篇主要是介紹java API中Thread類的其他方法的作用
### Thread類
void interrupt() 中斷線程。
當線程處于凍結狀態時(即,wait()、sleep())執行方法受阻時,
調用該方法,會將處于凍結狀態的線程回復到運行狀態。會出現一個InterruptException異常
void setPriority() 設置線程的優先級。線程一共有10個優先級,最大的優先級為10,最小為1.
默認為5。
~~~
class InterRunnable implements Runnable{
private int x;
private boolean flag=true;
public synchronized void run(){
if(flag){
try{
wait(); //讓線程處于等待狀態
}catch(InterruptedException e){
System.out.println(Thread.currentThread().getName()+"....exception..");
flag = false;
}
System.out.println(Thread.currentThread().getName()+"....run.."+x++);
}
}
public void changeFlag(){
this.flag = false;
}
}
public class ThreadMethod{
public static void main(String args[]){
InterRunnable ir = new InterRunnable();
Thread t1 = new Thread(ir);
Thread t2 = new Thread(ir);
Thread t3 = new Thread(ir);
t1.setPriority(Thread.MAX_PRIORITY); //設置最大優先級
t2.setPriority(Thread.MAX_PRIORITY);
t1.start();
t2.start();
t3.start();
for(int i=0;i<100;i++){
if(i==60){
t1.interrupt();
t2.interrupt();
t3.interrupt();
break; //當i=60時,就讓程序結束
}
System.out.println(Thread.currentThread().getName()+"........"+i);
}
System.out.println("over");
}
}
~~~
void setDaemon(boolean on)**將該線程標記為守護線程或用戶線程。
該方法又稱設置線程為后臺線程,當它所依附的前臺線程消亡時,它也自動消亡。
~~~
class InterRunnable implements Runnable{
private int x;
private boolean flag=true;
public synchronized void run(){
while(flag)
System.out.println(Thread.currentThread().getName()+"....run.."+x++);
}
public void changeFlag(){
this.flag = false;
}
}
public class ThreadMethod{
public static void main(String args[]){
InterRunnable ir = new InterRunnable();
Thread t1 = new Thread(ir);
Thread t2 = new Thread(ir);
Thread t3 = new Thread(ir);
t1.setDaemon(true); //設置為守護線程
t2.setDaemon(true); //設置為守護線程
t3.setDaemon(true); //設置為守護線程
t1.start();
t2.start();
t3.start();
for(int i=0;i<100;i++){
if(i==60){
break; //當i=60時,就讓程序結束
}
System.out.println(Thread.currentThread().getName()+"........"+i);
}
System.out.println("over");
}
}
~~~
void join()等待該線程終止
當線程A執行到了B線程的join方法時,A就會等待,等B執行完了之后,A才會執行。
join可以用來臨時加入線程執行。
~~~
<span style="font-size:18px;">class InterRunnable implements Runnable{
private int x;
private boolean flag=true;
public void run(){
for(int i=0;i<50;i++)
System.out.println(Thread.currentThread().getName()+"....run.."+i++);
}
public void changeFlag(){
this.flag = false;
}
}
public class ThreadMethod{
public static void main(String args[])throws Exception{
InterRunnable ir = new InterRunnable();
Thread t1 = new Thread(ir);
Thread t3 = new Thread(ir);
t1.start();
t1.join();
t3.start();
for(int i=0;i<100;i++){
if(i==60){
break; //當i=60時,就讓程序結束
}
System.out.println(Thread.currentThread().getName()+"........"+i);
}
System.out.println("over");
}
}</span>
~~~
static void yield()
暫停當前正在執行的線程對象,并執行其他線程。
String toString()
返回該線程的字符串表示形式,包括線程名稱、優先級和線程組。
~~~
<span style="font-size:18px;">class InterRunnable implements Runnable{
private int x;
private boolean flag=true;
public void run(){
for(int i=0;i<50;i++)
System.out.println(Thread.currentThread().getName()+"....run.."+i++);
Thread.yield();
}
public void changeFlag(){
this.flag = false;
}
}
public class ThreadMethod{
public static void main(String args[])throws Exception{
InterRunnable ir = new InterRunnable();
Thread t1 = new Thread(ir);
Thread t3 = new Thread(ir);
t1.start();
t3.start();
}
}
</span>
~~~