`

多线程

    博客分类:
  • java
 
阅读更多

http://www.java3z.com/cwbwebhome/article/article2/2875.html

二、一般用法举例

import java.io.Serializable;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestThreadPool {
 private static int produceTaskSleepTime = 2;
 private static int consumeTaskSleepTime = 2000;
 private static int produceTaskMaxNumber = 10;
 
public static void main(String[] args) {
//构造一个线程池
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3,TimeUnit.SECONDS, 
        new ArrayBlockingQueue(3),new ThreadPoolExecutor.CallerRunsPolicy());
for(int i=1;i<=produceTaskMaxNumber;i++){
  try {
   //产生一个任务,并将其加入到线程池
    String task = "task@ " + i;
    System.out.println("put " + task);
    threadPool.execute(new ThreadPoolTask(task));
    //便于观察,等待一段时间
    Thread.sleep(produceTaskSleepTime);
  } catch (Exception e) {
    e.printStackTrace();
  }
}
}
/**
线程池执行的任务 
@author hdpan 
*/
public static class ThreadPoolTask implements Runnable,Serializable{
  private static final long serialVersionUID = 0;
  //保存任务所需要的数据
  private Object threadPoolTaskData;
ThreadPoolTask(Object tasks){
  this.threadPoolTaskData = tasks;
}
public void run(){
  //处理一个任务,这里的处理方式太简单了,仅仅是一个打印语句
  System.out.println("start ..."+threadPoolTaskData);
  try {
    ////便于观察,等待一段时间
    Thread.sleep(consumeTaskSleepTime);
   } catch (Exception e) {
    e.printStackTrace();
  }
  threadPoolTaskData = null;
}
public Object getTask(){
  return this.threadPoolTaskData;
}
}
}



http://heipark.iteye.com/blog/1156011


  1. public class Test {  
  2.   
  3.     public static void main(String[] args) {  
  4.         BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();  
  5.         ThreadPoolExecutor executor = new ThreadPoolExecutor(361, TimeUnit.DAYS, queue);  
  6.   
  7.         for (int i = 0; i < 20; i++) {  
  8.             final int index = i;  
  9.             executor.execute(new Runnable() {  
  10.                 public void run() {  
  11.                     try {  
  12.                         Thread.sleep(4000);  
  13.                     } catch (InterruptedException e) {  
  14.                         e.printStackTrace();  
  15.                     }  
  16.                     System.out.println(String.format("thread %d finished", index));  
  17.                 }  
  18.             });  
  19.         }  
  20.         executor.shutdown();  
  21.     }  
  22. }  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics