| final int READY = 0;   public static final int RUNNING = 1;   public static final int FINISHED = 2;   private int status;    private int taskId;    public Task(int taskId){   this.status = READY;   this.taskId = taskId;   }        public void execute() {    setStatus(Task.RUNNING);   System.out.println("当前线程 ID 是:" + Thread.currentThread().getName()   +" | 任务 ID 是:"+this.taskId);    try {   Thread.sleep(1000);   } catch (InterruptedException e) {   e.printStackTrace();   }    setStatus(FINISHED);   }   public void setStatus(int status) {   this.status = status;   }   public int getTaskId() {   return taskId;   }   }        class WorkThread extends Thread {    private List taskList = null;   private int threadId;          public WorkThread(List taskList,int threadId) {   this.taskList = taskList;   this.threadId = threadId;   }        public void run() {   for (Task task : taskList) {   task.execute();   }   }   } 
 执行结果如下,注意观察每个Java多线程分配到的任务数量及区间。直到所有的线程完成了所分配到的任务后程序结束: - 线程 0 的任务数:22 区间[0,21]   
 - 线程 1 的任务数:22 区间[22,43]   
 - 线程 2 的任务数:22 区间[44,65]   
 - 线程 3 的任务数:21 区间[66,86]   
 - 线程 4 的任务数:21 区间[87,107]   
 - 实际要启动的工作线程数:5   
 - 当前线程 ID 是:Thread-0 | 任务 ID 是:0   
 - 当前线程 ID 是:Thread-1 | 任务 ID 是:22   
 
 
  |