import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * Created by leizhimin on 2014/8/19. */ public class TestThreadPool { public static BlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(300); public static void main(String[] args) { for (int i = 0; i < 3; i++) { queue.add(new TestThread("初始化")); } ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 3, 15, TimeUnit.SECONDS, queue); executor.execute(queue.poll()); new Thread(new Runnable() { @Override public void run() { while (true) { queue.add(new TestThread("生产者")); try { Thread.currentThread().sleep(2000L); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } class TestThread implements Runnable { public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private String name; //创建者 private Date addDate; //添加到队列的日期 TestThread(String name) { this.name = name; this.addDate = new Date(); } @Override public void run() { System.out.println(Thread.currentThread().getName() + ":创建者=" + name + ",创建时间=" + sdf.format(addDate) + ",执行时间=" + sdf.format(new Date())); try { Thread.currentThread().sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } }
执行结果:
pool-1-thread-1:创建者=初始化,创建时间=2014-08-20 07:16:49,执行时间=2014-08-20 07:16:49 pool-1-thread-1:创建者=初始化,创建时间=2014-08-20 07:16:49,执行时间=2014-08-20 07:16:50 pool-1-thread-1:创建者=初始化,创建时间=2014-08-20 07:16:49,执行时间=2014-08-20 07:16:51 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:49,执行时间=2014-08-20 07:16:52 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:51,执行时间=2014-08-20 07:16:53 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:53,执行时间=2014-08-20 07:16:54 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:55,执行时间=2014-08-20 07:16:55 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:57,执行时间=2014-08-20 07:16:57 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:16:59,执行时间=2014-08-20 07:16:59 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:01,执行时间=2014-08-20 07:17:01 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:03,执行时间=2014-08-20 07:17:03 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:05,执行时间=2014-08-20 07:17:05 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:07,执行时间=2014-08-20 07:17:07 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:09,执行时间=2014-08-20 07:17:09 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:11,执行时间=2014-08-20 07:17:11 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:13,执行时间=2014-08-20 07:17:13 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:15,执行时间=2014-08-20 07:17:15 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:17,执行时间=2014-08-20 07:17:17 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:19,执行时间=2014-08-20 07:17:19 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:21,执行时间=2014-08-20 07:17:21 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:23,执行时间=2014-08-20 07:17:23 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:25,执行时间=2014-08-20 07:17:25 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:27,执行时间=2014-08-20 07:17:27 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:29,执行时间=2014-08-20 07:17:29 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:31,执行时间=2014-08-20 07:17:31 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:33,执行时间=2014-08-20 07:17:33 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:35,执行时间=2014-08-20 07:17:35 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:37,执行时间=2014-08-20 07:17:37 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:39,执行时间=2014-08-20 07:17:39 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:41,执行时间=2014-08-20 07:17:41 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:43,执行时间=2014-08-20 07:17:43 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:45,执行时间=2014-08-20 07:17:45 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:47,执行时间=2014-08-20 07:17:47 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:49,执行时间=2014-08-20 07:17:49 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:51,执行时间=2014-08-20 07:17:51 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:53,执行时间=2014-08-20 07:17:53 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:55,执行时间=2014-08-20 07:17:55 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:57,执行时间=2014-08-20 07:17:57 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:17:59,执行时间=2014-08-20 07:17:59 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:01,执行时间=2014-08-20 07:18:01 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:03,执行时间=2014-08-20 07:18:03 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:05,执行时间=2014-08-20 07:18:05 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:07,执行时间=2014-08-20 07:18:07 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:09,执行时间=2014-08-20 07:18:09 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:11,执行时间=2014-08-20 07:18:11 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:13,执行时间=2014-08-20 07:18:13 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:15,执行时间=2014-08-20 07:18:15 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:17,执行时间=2014-08-20 07:18:17 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:19,执行时间=2014-08-20 07:18:19 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:21,执行时间=2014-08-20 07:18:21 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:23,执行时间=2014-08-20 07:18:23 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:25,执行时间=2014-08-20 07:18:25 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:27,执行时间=2014-08-20 07:18:27 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:29,执行时间=2014-08-20 07:18:29 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:31,执行时间=2014-08-20 07:18:31 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:33,执行时间=2014-08-20 07:18:33 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:35,执行时间=2014-08-20 07:18:35 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:37,执行时间=2014-08-20 07:18:37 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:39,执行时间=2014-08-20 07:18:39 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:41,执行时间=2014-08-20 07:18:41 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:43,执行时间=2014-08-20 07:18:43 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:45,执行时间=2014-08-20 07:18:45 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:47,执行时间=2014-08-20 07:18:47 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:49,执行时间=2014-08-20 07:18:49 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:51,执行时间=2014-08-20 07:18:51 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:53,执行时间=2014-08-20 07:18:53 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:55,执行时间=2014-08-20 07:18:55 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:57,执行时间=2014-08-20 07:18:57 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:18:59,执行时间=2014-08-20 07:18:59 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:01,执行时间=2014-08-20 07:19:01 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:03,执行时间=2014-08-20 07:19:03 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:05,执行时间=2014-08-20 07:19:05 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:07,执行时间=2014-08-20 07:19:07 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:09,执行时间=2014-08-20 07:19:09 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:11,执行时间=2014-08-20 07:19:11 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:13,执行时间=2014-08-20 07:19:13 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:15,执行时间=2014-08-20 07:19:15 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:17,执行时间=2014-08-20 07:19:17 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:19,执行时间=2014-08-20 07:19:19 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:21,执行时间=2014-08-20 07:19:21 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:23,执行时间=2014-08-20 07:19:23 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:25,执行时间=2014-08-20 07:19:25 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:27,执行时间=2014-08-20 07:19:27 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:29,执行时间=2014-08-20 07:19:29 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:31,执行时间=2014-08-20 07:19:31 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:33,执行时间=2014-08-20 07:19:33 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:35,执行时间=2014-08-20 07:19:35 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:37,执行时间=2014-08-20 07:19:37 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:39,执行时间=2014-08-20 07:19:39 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:41,执行时间=2014-08-20 07:19:41 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:43,执行时间=2014-08-20 07:19:43 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:45,执行时间=2014-08-20 07:19:45 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:47,执行时间=2014-08-20 07:19:47 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:49,执行时间=2014-08-20 07:19:49 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:51,执行时间=2014-08-20 07:19:51 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:53,执行时间=2014-08-20 07:19:53 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:55,执行时间=2014-08-20 07:19:55 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:57,执行时间=2014-08-20 07:19:57 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:19:59,执行时间=2014-08-20 07:19:59 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:01,执行时间=2014-08-20 07:20:01 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:03,执行时间=2014-08-20 07:20:03 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:05,执行时间=2014-08-20 07:20:05 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:07,执行时间=2014-08-20 07:20:07 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:09,执行时间=2014-08-20 07:20:09 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:11,执行时间=2014-08-20 07:20:11 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:13,执行时间=2014-08-20 07:20:13 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:15,执行时间=2014-08-20 07:20:15 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:17,执行时间=2014-08-20 07:20:17 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:19,执行时间=2014-08-20 07:20:19 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:21,执行时间=2014-08-20 07:20:21 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:23,执行时间=2014-08-20 07:20:23 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:25,执行时间=2014-08-20 07:20:25 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:27,执行时间=2014-08-20 07:20:27 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:29,执行时间=2014-08-20 07:20:29 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:31,执行时间=2014-08-20 07:20:31 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:33,执行时间=2014-08-20 07:20:33 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:35,执行时间=2014-08-20 07:20:35 pool-1-thread-1:创建者=生产者,创建时间=2014-08-20 07:20:37,执行时间=2014-08-20 07:20:37
这个是理想情况,如果生产者创建速度大于消费者速度,则会随着时间推移耗尽系统资源,这个需要通过RejectedExecutionHandler来实现。
基于队列的线程池
时间: 2024-10-14 04:28:00