线程控制方法

2018-03-11  本文已影响0人  非文666

1.sleep()方法

使当前线程进入阻塞状态,可设置阻塞的时间。

public static void main(String[] args) {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"   "+i);
            if(i==5){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

2.yield()方法

使当前线程让步方法,使优先级高的线程先执行

3.join()方法

首先有两个线程,一个是使用join()方法代码的线程,一个是线程实例被调用join()方法,被调用join()方法的实例线程会先执行,拥有这段代码的线程会被阻塞,知道实例线程执行完毕。

public class ThreadJoin {
    
    public static void main(String[] args) {
        
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"   "+i);
            if(i==5){
                myThread myThread=new myThread();
                myThread.start();
                try {
                    myThread.join();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    static class myThread extends Thread{
        @Override
        public void run() {
            for(int j=0;j<10;j++){
                System.out.println(Thread.currentThread().getName()+"   "+j);
            }
        }
    }

}

如上代码,主线程将被阻塞,直到myThread线程全部执行完毕。

4.设置线程优先级

每一个线程实例都可以设置线程优先级,从1~10。

ThreadPriority thread1=new ThreadPriority();
        thread1.setPriority(MIN_PRIORITY);
        thread1.start();
        ThreadPriority thread2=new ThreadPriority();
        thread2.setPriority(MAX_PRIORITY);
        thread2.start();
上一篇 下一篇

猜你喜欢

热点阅读