利用jdk提供线程池执行任务写法, 主要是查看 API文档的 Executors 方法
package thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class ThreadPool { /** * 1 线程池中只有 1 有几个任务 2 创建了几个线程 * 2 创建任务后直接将任务丢给线程池 让线程池中的线程执行即可 执行完毕后 线程池内的线程不会死亡 会等待将来的任务 */ public static void main(String[] args) { //ExecutorService threadPool = Executors.newFixedThreadPool(3); 池子中线程数是固定3个 ExecutorService threadPool = Executors.newCachedThreadPool();//池子中线程随着任务增加会动态增加 //Executors.newSingleThreadExecutor(); 创建一个线程 如果此线程死亡 那么死亡之前会新建另一个线程 /*Executors.newScheduledThreadPool(3).scheduleAtFixedRate( 线程池中创建定时器 执行 new Runnable(){ @Override public void run() { System.out.println("bombing!"); }}, 6, 2, TimeUnit.SECONDS);*/ for(int i=0; i<10; i++){ final int task = i; threadPool.execute(new Runnable() { @Override public void run() { for(int j=0; j<10; j++) { try { Thread.sleep(70); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程: " + Thread.currentThread().getName() + " 执行第 " + task +"次任务" + "打印结果为: " + j); } } }); } System.out.println("all of 10 tasks have committed! "); //threadPool.shutdown(); 执行完线程后 池关闭 } }
线程池类关系图:
相关推荐
- **线程池**:Executors框架介绍,线程池的配置和使用。 - **并发工具类**:CountDownLatch、CyclicBarrier、Semaphore等的使用场景和案例分析。 - **原子操作**:AtomicInteger等类的使用方法。 ##### 3. 设计...
在Java 1.5之前,为了实现多线程的并发操作,开发者通常需要手动编写复杂的代码来处理线程间的同步问题,如使用`synchronized`关键字、`wait()`与`notify()`方法等。虽然也有诸如Apache Commons Pool等第三方库提供...
**JDK5.0新增类别**:`UncaughtExceptionHandler`处理未捕获异常,`Lock`和`Condition`提供更灵活的锁机制,`BlockingQueue`用于线程间的数据传递,`Callable`和`Future`提供异步计算结果,`Executors`提供线程池。...
3. 探讨线程池的使用,如ExecutorService、ThreadPoolExecutor和Executors等。 第八天:反射与注解 1. 了解Java反射机制,通过反射动态操作类、接口、方法和字段。 2. 学习Class类的使用,以及newInstance()、...
6. `JdkFutureAdapters.listenInPoolThread(future)`:此方法将标准的JDK Future转换为Guava的ListenableFuture,并在指定的线程池中执行回调,提供了更好的异步控制。 以下是一个简单的测试示例,展示了如何使用...