java中线程池创建的方式有哪些

本篇文章为大家展示了java中线程池创建的方式有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联建站服务项目包括翼城网站建设、翼城网站制作、翼城网页制作以及翼城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,翼城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到翼城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

Java可以用来干什么

Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。

1. newCachedThreadPool

创建一个线程池,如果线程池中的线程数量过大,它可以有效的回收多余的线程,如果线程数不足,那么它可以创建新的线程。

public static void method() throws Exception {    ExecutorService executor = Executors.newCachedThreadPool();    for (int i = 0; i < 5; i++) {        final int index = i;        Thread.sleep(1000);        executor.execute(new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName() + "  " + index);            }        });    }}

2. newFixedThreadPool

创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。

public static void method_01() throws InterruptedException {    ExecutorService executor = Executors.newFixedThreadPool(1);    for (int i = 0; i < 10; i++) {        Thread.sleep(1000);        final int index = i;        executor.execute(() -> {            try {                Thread.sleep(2 * 1000);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(Thread.currentThread().getName() + "  " + index);        });    }    executor.shutdown();}

3. newScheduledThreadPool

创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。

public class TestScheduledThreadPoolExecutor {
 
    public static void main(String[] args) {
 
        ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
 
        exec.scheduleAtFixedRate(new Runnable() {//每隔一段时间就触发异常
 
                      @Override
 
                      publicvoid run() {
 
                           //throw new RuntimeException();
 
                           System.out.println("================");
 
                      }
 
                  }, 1000, 5000, TimeUnit.MILLISECONDS);
 
        exec.scheduleAtFixedRate(new Runnable() {//每隔一段时间打印系统时间,证明两者是互不影响的
 
                      @Override
 
                      publicvoid run() {
 
                           System.out.println(System.nanoTime());
 
                      }
 
                  }, 1000, 2000, TimeUnit.MILLISECONDS);
 
    }
 
}

4.newSingleThreadExecutor

单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务。

public class MyThread extends Thread {
 
    @Override
 
    public void run() {
 
        System.out.println(Thread.currentThread().getName() + "正在执行。。。");
 
    }
 
}

上述内容就是java中线程池创建的方式有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前名称:java中线程池创建的方式有哪些
标题URL:http://scyanting.com/article/jpsesh.html