zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java 线程池测试类详解编程语言

2023-06-13 09:20:30 时间
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 Runnable (2), new ThreadPoolExecutor.DiscardOldestPolicy()); 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; }

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10902.html

cjava