给每个线程设置优先级?void  setPriority(int newPriority)
Changes the priority of this thread.

解决方案 »

  1.   

    要并行的话,还要求先进先出,就可能会有违初衷,也许有的处理时间长,有的短。
    要先进先出的话,你就顺序执行,可以参考这个:        ExecutorService EXECUTOR = Executors.newSingleThreadExecutor();
            for(int i =0;i<5;i++){
                EXECUTOR.execute(new MyRun("thread"+i));
            }
            EXECUTOR.shutdown();
      

  2.   

    谢谢benma378的帮助!
    但设置线程优先级的方式在这个场景下不合适,因为线程的优先级是一种不严谨的做法,java并不能100%保存优先级大的线程一定会先执行。
      

  3.   

    试试设置一个锁.......线程一进来就检查队列下一个是不是它!如果不是就让他睡眠...并发想绝对控制不是那么容易...相对来说线程抢执行是随机的...加锁也只能保证程序是ONE BY ONE的执行.并不能保证顺序...所以要加一个判定...或者你说说你的具体业务功能需求..可以有更好的解决方案
      

  4.   

    定义一个静态的boolean全局变量,启动一个主线程分配顺序.先把boolean变量设置为true;启动第一个线程,第一个线程运行完成之后,设置boolean变量为flase,主线程一直循环查询直到这个boolean变量为false,然后把这个boolean变量再设置为true,再启动第二个线程......以此类推