Java面试经典题:线程池专题
发布时间:2020-12-24 15:32:54 所属栏目:交互 来源:网络整理
导读:1、什么是线程池 线程池的基本思想是一种对象池,在程序启动时就开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开
public class ThreadPoolExecutorTest1 { public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 1000; i++) { final int index = i; try { Thread.sleep(index * 1000); } catch (Exception e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { public void run() { System.out.println(Thread.currentThread().getName()+":"+index); } }); } } } 2. newFixedThreadPoolnewFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待,指定线程池中的线程数量和最大线程数量一样,也就线程数量固定不变 示例代码如下 public class ThreadPoolExecutorTest { public static void main(String[] args) { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);// 每隔两秒打印3个数 for (int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println(Thread.currentThread().getName()+":"+index); //三个线程并发 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } } } 3. newscheduledThreadPoolnewscheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行。延迟执行示例代码如下.表示延迟1秒后每3秒执行一次 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |