码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSE---多线程---线程的控制

时间:2019-06-14 14:43:47      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:图片   完成   read   print   image   sleep   out   row   err   

1、Java提供了一些工具方法,可以便捷控制线程的执行:

   1.1  join

          Thread提供了让一个线程等待另一个线程执行完成的方法:join;

          当某个程序的执行流中调用其他线程的join方法,该线程将被阻塞,直到被加入的线程执行完成为止;

          技术图片

 

package com.an;

public class ThreadTarget implements Runnable {
    //多线程共享资源i
    private int i;
    public void run() {
        for (;i<20;i++){
            System.out.println(Thread.currentThread().getName()+"="+i);
        }
    }

    public static void main(String[] args)throws InterruptedException{
        for (int i=0;i<30;i++){
            System.out.println(Thread.currentThread().getName()+"="+i);
            //当i==15时,main线程将被阻塞,test-one线程启动执行,直到test-one线程执行完成,main线程才继续执行
            if (i==15){
                ThreadTarget threadTarget=new ThreadTarget();
                Thread thread=new Thread(threadTarget,"test-one");
                thread.start();
                thread.join();
            }
        }
    }
}

   1.2  sleep

           sleep可以将当前线程暂停一段时间,进入阻塞状态;

package com.an;

public class ThreadTest {
    public static void main(String[] args){
        for (int i=0;i<30;i++){
            System.out.println(Thread.currentThread().getName()+"="+i);
            //当i==15时,main线程将被阻塞,5000毫秒后继续执行
            if (i==15){
                System.out.println("5000毫秒后执行...");
                Thread.sleep(5000);
            }
        }
    }
}

  

   1.3  yield

           yield可以让当前线程暂停,但不会进入阻塞,而是直接进入就绪状态(只有优先级相同或者比该线程优先级高的线程才会获得执行机会);

package com.an;

public class ThreadTest {

    public static void main(String[] args){
        for (int i=0;i<30;i++){
            System.out.println(Thread.currentThread().getName()+"="+i);
            //当i==15时,main线程将重新进入就绪状态
            if (i==15){
                Thread.yield();
            }
        }
    }
}

   1.4      改变线程的优先级

          getPriority()、setPriority()

JavaSE---多线程---线程的控制

标签:图片   完成   read   print   image   sleep   out   row   err   

原文地址:https://www.cnblogs.com/anpeiyong/p/11022968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!