日期:2014-05-20  浏览次数:20586 次

进程池进程执行顺序
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线程发现自己要睡会有空闲段,所以才去执行其他子线程,但是如果你的电脑是多核的,这种情况就不一定了,你可以用多核电脑试试(曾经碰到过,个人总结,不权威阿)