#今晚做笔试遇到多线程,要求顺序执行三个方法,本人比较菜,基础可以的同学应该是信手拈来,我有点生疏,就总结一下。
##1.用join();方法来阻塞
##2.用线程池Executors
##3.用线程池
##1.用join();方法来阻塞
####以下代码会出现可能不顺序执行的情况
package myThread;
public class orderRun {
static Thread T1=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("1");
}
});
static Thread T2=new Thread(new Runnable(){
@Override
public void run() {
System.out.println("2");
}
});
static Thread T3=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("3");
}
});
public static void main(String[] args){
T1.start();
T2.start();
T3.start();
}
}
###如果改进一下。
public static void main(String[] args)throws InterruptedException{
T1.start();
T1.join();
T2.start();
T2.join();
T3.start();
T3.join();
}
###OK啦!
##线程池Excutors,这里我们使用Executors中newSingleThreadExecutor()方法,创建一个单线程的线程池。
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class executors {
static Thread T1=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("1");
}
});
static Thread T2=new Thread(new Runnable(){
@Override
public void run() {
System.out.println("2");
}
});
static Thread T3=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("3");
}
});
static ExecutorService executors=Executors.newSingleThreadExecutor();
static void main(String[] args){
executors.submit(T1);
executors.submit(T2);
executors.submit(T3);
}
}
###OK!另外还可以在方法内添加thread.join()来阻塞,我认为这样不是好的编程习惯,不研究了。有空继续更~
多线程顺序执行技巧

本文探讨了在Java中如何确保多线程环境下任务按顺序执行的方法,包括使用join()方法阻塞线程、利用线程池Executors及单线程线程池实现顺序执行,适合初学者和基础水平开发者参考。
379

被折叠的 条评论
为什么被折叠?



