`
隐形的翅膀
  • 浏览: 497030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程池示例

 
阅读更多
1:newSingleThreadExecutor

MyThread.java

publicclassMyThread extends Thread {

    @Override

    publicvoid run() {

        System.out.println(Thread.currentThread().getName() + "正在执行。。。");

    }

}


TestSingleThreadExecutor.java

publicclassTestSingleThreadExecutor {

    publicstaticvoid main(String[] args) {

        //创建一个可重用固定线程数的线程池

        ExecutorService pool = Executors. newSingleThreadExecutor();

        //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口

        Thread t1 = new MyThread();

        Thread t2 = new MyThread();

        Thread t3 = new MyThread();

        Thread t4 = new MyThread();

        Thread t5 = new MyThread();

        //将线程放入池中进行执行

        pool.execute(t1);

        pool.execute(t2);

        pool.execute(t3);

        pool.execute(t4);

        pool.execute(t5);

        //关闭线程池

        pool.shutdown();

    }

}


输出结果

pool-1-thread-1正在执行。。。

pool-1-thread-1正在执行。。。

pool-1-thread-1正在执行。。。

pool-1-thread-1正在执行。。。

pool-1-thread-1正在执行。。。


2newFixedThreadPool

TestFixedThreadPool.Java

publicclass TestFixedThreadPool {

    publicstaticvoid main(String[] args) {

        //创建一个可重用固定线程数的线程池

        ExecutorService pool = Executors.newFixedThreadPool(2);

        //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口

        Thread t1 = new MyThread();

        Thread t2 = new MyThread();

        Thread t3 = new MyThread();

        Thread t4 = new MyThread();

        Thread t5 = new MyThread();

        //将线程放入池中进行执行

        pool.execute(t1);

        pool.execute(t2);

        pool.execute(t3);

        pool.execute(t4);

        pool.execute(t5);

        //关闭线程池

        pool.shutdown();

    }

}


输出结果

pool-1-thread-1正在执行。。。

pool-1-thread-2正在执行。。。

pool-1-thread-1正在执行。。。

pool-1-thread-2正在执行。。。

pool-1-thread-1正在执行。。。


3 newCachedThreadPool

TestCachedThreadPool.java

publicclass TestCachedThreadPool {

    publicstaticvoid main(String[] args) {

        //创建一个可重用固定线程数的线程池

        ExecutorService pool = Executors.newCachedThreadPool();

        //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口

        Thread t1 = new MyThread();

        Thread t2 = new MyThread();

        Thread t3 = new MyThread();

        Thread t4 = new MyThread();

        Thread t5 = new MyThread();

        //将线程放入池中进行执行

        pool.execute(t1);

        pool.execute(t2);

        pool.execute(t3);

        pool.execute(t4);

        pool.execute(t5);

        //关闭线程池

        pool.shutdown();

    }

}


输出结果:
pool-1-thread-2正在执行。。。

pool-1-thread-4正在执行。。。

pool-1-thread-3正在执行。。。

pool-1-thread-1正在执行。。。

pool-1-thread-5正在执行。。。


4 newScheduledThreadPool

TestScheduledThreadPoolExecutor.java

publicclass TestScheduledThreadPoolExecutor {

    publicstaticvoid 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);

    }

}


输出结果

================

8384644549516

8386643829034

8388643830710

================

8390643851383

8392643879319

8400643939383

分享到:
评论

相关推荐

    Python 使用threading+Queue实现线程池示例

    一、线程池 1、为什么需要使用线程池 1.1 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3,如果T1+T3>T2,那...

    linux线程池示例程序

    下面将详细解释线程池的工作原理、其优点以及如何在Linux环境下实现一个线程池示例程序。 线程池的工作原理: 线程池由几个关键组件组成:工作线程、任务队列和管理器。当有新的任务需要执行时,不会直接创建新线程...

    java 线程池示例(自己实现的参考别人的代码)

    NULL 博文链接:https://yulincqupt.iteye.com/blog/1673919

    C++ 线程池示例,VS2015编译通过

    一个简单的线程池示例,可以自定义线程数量和执行任务,代码简洁可扩展性强。在使用上也很方便。下面是一个简单的调用 int main() { xcyk::ThreadPool threadPool("xcyk"); SYSTEM_INFO SystemInfo; ...

    线程池示例代码

    `ThreadPoolDemo.rar`和`thread_pool.rar`可能是线程池的实现示例,可能包含了一些基本的线程池设计和使用方法。这些示例通常会展示如何初始化线程池,提交任务,以及在适当的时候关闭线程池。分析这些示例可以帮助...

    uThreadPool线程池示例(查找0-1亿之间的质数任务)

    总之,`uThreadPool线程池示例`是一个很好的学习资源,它演示了如何利用线程池处理大型计算任务,同时展示了多线程编程中的并发控制和任务调度。对于想要提升并发编程能力的开发者来说,这是一个值得研究的案例。

    java线程池示例(包含自定义拒绝策略) #资源达人分享计划#

    线程池示例(包含自定义拒绝策略),演示了如何创建一个线程池,以及添加到队列的过程,先添加到工作线程,然后是缓存队列,最后是创建临时线程

    uThreadPool.pas 线程池示例 DEMO 修正资源死锁

    此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。 用法: // 创建线程池 FThreadPool := TThreadsPool.Create(Self); // 创建线程池 FThreadPool.ThreadsMin := 5; // ...

    Java8并行流中自定义线程池操作示例

    Java8并行流中自定义线程池操作示例 Java8并行流中自定义线程池操作示例主要介绍了Java8并行流中自定义线程池操作,结合实例形式分析了并行流的相关概念、定义及自定义线程池的相关操作技巧。 1. 概览 Java8引入了...

    Java线程池示例代码.zip

    线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他...

    线程池使用示例(含源代码)

    在提供的"线程池示例"文件中,应该包含了创建和使用线程池的代码示例,你可以参考并进行扩展,例如添加更多任务、调整线程池参数,或者实现自定义的线程工厂和拒绝策略,以加深对线程池的理解。

    SpringBoot线程池详解含完整示例(值得珍藏)

    Spring Boot的线程池是Java并发编程的核心工具,它提供了高效管理并发任务的能力,从而优化系统性能和响应速度。在Spring Boot中,线程池的使用涵盖了多种类型的ExecutorService实现,包括SingleThreadExecutor、...

    VC++写的线程池示例

    在"VC++写的线程池示例"中,可能包含了这些核心组件的实现。源代码可能展示了如何定义和管理`CWinThread`的子类,以及如何使用MFC的同步机制(如`CSingleLock`或`CMutex`)来保证线程安全。此外,示例可能还包括任务...

    线程池实例(Linux)

    线程池是一种多线程处理形式,通过维护一组可重用线程来提高系统的响应速度和效率。在Linux系统中,实现线程池通常需要掌握以下几个核心知识点: 1. **线程基础**:线程是操作系统分配CPU时间的基本单位,一个进程...

    delphi线程池实例

    在编程领域,线程池是一种优化并发处理的机制,它管理一组预先创建的线程,以便根据需要分配任务,而不是每次需要执行新任务时都创建新的线程。Delphi,作为一个强大的面向对象的编程环境,提供了对线程池的支持,这...

    Java-Thread-Pool-example:一个简单的 Java 线程池示例

    Java线程池是一种高效管理并发任务的...这些示例可以帮助我们理解线程池的工作原理,以及如何根据实际情况选择合适的线程池配置。通过学习和实践,我们可以更好地理解和利用Java线程池,提高多线程环境下的程序性能。

Global site tag (gtag.js) - Google Analytics