之前看到个问题,如果有3个线程,如何保证3个线程的执行先后顺序。其实实现的方法有很多,这里主要介绍几种。
首先,线程Thread有一个设置优先级的属性Priority,默认数值为5,设置的越高优先级越高,最高为10。但是这里需要注意的是:
优先级作用只是表示了执行的概率,也就是说优先级6的线程比5的线程概率更高,但不代表一定就优先执行。
(一)首先说下第一种方法,线程池ExecutorService有一个工厂方法newSingleThreadExecutor(),该方法生成的是单例线程,因此如果向其提交线程时,先提交的先执行,后提交的执行,以此就能实现执行顺序。
代码:
ExecutorService es = Executors.newSingleThreadExecutor();
es.submit(new Runnable() {
@Override
public void run() {
System.out.println("C");
}
});
es.submit(new Runnable() {
@Override
public void run() {
System.out.println("B");
}
});
es.submit(new Runnable() {
@Override
public void run() {
System.out.pri