标签:图片 完成 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()
标签:图片 完成 read print image sleep out row err
原文地址:https://www.cnblogs.com/anpeiyong/p/11022968.html