进程池进程执行顺序
Java code
pullic class ThreadCooperation
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newFixedThreadPool(2);
//DepositTask、WithdrawTask是实现了Runnable接口的类,都定义了run()方法。
executor.execute(new DepositTask());
executor.execute(new WithdrawTask());
System.out.println("...(略)");
}
}
这是main函数的一部分,在运行程序的时候,总是main函数的println方法先打印,再是进程池的两个进程打印出来。不解!
------解决方案--------------------线程执行顺序是CPU决定的!要其余线程先执行的话,可以要main方法所在线程sleep()久点!
------解决方案--------------------线程执行顺序是CPU决定的,你可以让main所在线程sleep久点!
------解决方案--------------------在你的电脑是单核的情况下,main线程确实优先执行,即使你在主线程里加了Thread.sleep(xxx);它实际上也是最先执行main线程的,只不过是main线程发现自己要睡会有空闲段,所以才去执行其他子线程,但是如果你的电脑是多核的,这种情况就不一定了,你可以用多核电脑试试(曾经碰到过,个人总结,不权威阿)