天天看點

Java多線程常用方法

1.getName(); 傳回該線程的名稱。

2.currentThread();傳回對目前正在執行的線程對象的引用。

3.isAlive();測試線程是否處于活動狀态。

4.sleep();線程休眠。

5.setPriority(int newPriority);更改線程的優先級。

6.yield();暫停目前正在執行的線程對象,并執行其他線程。

執行個體如下:

測試getName(); 傳回該線程的名稱。

currentThread();傳回對目前正在執行的線程對象的引用。

public class Demo1 implements Runnable{
    public void run() {
        for(int i=0;i<10;i++){
            // 擷取目前線程
            Thread t=Thread.currentThread();
            System.out.println(t.getName()+":"+i); // 傳回線程的名稱
        }
    }
    //測試傳回線程的名稱
    public static void main(String[] args) {
        Demo1 demo1=new Demo1();
        new Thread(demo1).start();
        new Thread(demo1).start();
        new Thread(demo1,"線程3").start();
    }
 
}
           

測試isAlive();測試線程是否處于活動狀态。

public class Demo2 implements Runnable{
 
    public void run() {
        for(int i=0;i<10;i++){
            // 擷取目前線程
            Thread t=Thread.currentThread();
            System.out.println(t.getName()+":"+i); // 傳回線程的名稱
        }
    }
     
    public static void main(String[] args) {
        Demo2 demo2=new Demo2();
        Thread t1=new Thread(demo2);
        System.out.println("t1是否活動:"+t1.isAlive());
        t1.start();
        System.out.println("t1是否活動:"+t1.isAlive());
    }
}
           

測試 setPriority(int newPriority);更改線程的優先級。

public class Demo4 implements Runnable{
 
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<10;i++){
            try {
                Thread.sleep(1000);
                // 擷取目前線程
                Thread t=Thread.currentThread();
                System.out.println(t.getName()+":"+i); // 傳回線程的名稱
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
     
    public static void main(String[] args) {
        Demo4 demo4=new Demo4();
        Thread t1=new Thread(demo4,"線程A");
        Thread t2=new Thread(demo4,"線程B");
        Thread t3=new Thread(demo4,"線程C");
        t1.setPriority(Thread.MAX_PRIORITY);
        t2.setPriority(Thread.MIN_PRIORITY);
        t3.setPriority(Thread.NORM_PRIORITY);
        t3.start();
        t1.start();
        t2.start();
    }
 
}
           

測試 yield();暫停目前正在執行的線程對象,并執行其他線程。

public class Demo5 implements Runnable{
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<10;i++){
            try {
                Thread.sleep(100);
                // 擷取目前線程
                Thread t=Thread.currentThread();
                System.out.println(t.getName()+":"+i); // 傳回線程的名稱
                if(i==5){
                    System.out.println("線程禮讓:");
                    Thread.currentThread().yield();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
     
    public static void main(String[] args) {
        Demo5 demo1=new Demo5();
        new Thread(demo1,"線程A").start();
        new Thread(demo1,"線程B").start();
    }
 
}