Java 线程池和多线程编程 ——线程池理解与创建
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 线程池和多线程编程 ——线程池理解与创建,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1948字,纯文字阅读大概需要3分钟。
内容图文
JDK1.5 引入了 Executor框架 ,对任务提交和执行进行解耦 , 定义任务后交由线程池执行。
线程池是由java.util.concurrent 包中Executors类的工厂方法创建线程池。
--------------------------------------------------------------------------------
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
public static executorservice newFixedThreadPool(int nThreads) nThreads
- 池中的线程数
ExecutorService pool = Executors.newFixedThreadPool(6);
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
public static executorservice newSingleThreadExecutor()
ExecutorService threadPool = Executors.newSingleThreadExecutor();
创建一个安排在给定延迟后运行命令或者定期地执行的拥有3个线程的线程池。
初始延迟为6秒 , 间隔定时为2秒 的定时任务。
Executors.newScheduledThreadPool(3).scheduleAtFixedRate( ()-> { System.out.println("bombing!"); }, 6, 2, TimeUnit.SECONDS); }
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
public static executorservice newSingleThreadExecutor()
--------------------------------------------------------------------------------
线程池框架提供了两种方式提交任务,根据不同的业务需求选择不同的方式。
① Executor.execute()
void execute(runnable command)
在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定。
② ExecutorService.submit()
|
submit(Callable<T>?task) 提交一个返回值的任务用于执行,返回一个表示任务的未决结Future。 |
|
? Future <?> |
submit(runnable?task) 提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future。 |
|
|
submit(runnable?task, T?result) 提交一个 Runnable 任务用于执行,并返回一个表示该任务的 Future。 |
两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor接口中,
而submit()方法可以返回持有计算结果的Future对象,它定义在ExecutorService接口中
https://www.jianshu.com/p/87bff5cc8d8c
深度剖析Executor框架 ↓↓↓
https://blog.csdn.net/javazejian/article/details/50890554
内容总结
以上是互联网集市为您收集整理的Java 线程池和多线程编程 ——线程池理解与创建全部内容,希望文章能够帮你解决Java 线程池和多线程编程 ——线程池理解与创建所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。