java线程池并发_Java并发教程–线程池

java线程池并发

Java 1.5中提供的最通用的并发增强功能之一是引入了可自定义的线程池。 这些线程池使您可以对诸如线程数,线程重用,调度和线程构造之类的东西进行大量控制。 让我们回顾一下。

首先,线程池。 让我们直接进入java.util.concurrent.ExecutorService ,它为我们提供了线程池的基本接口。 所有线程池都允许提交CallableRunnable实例以供将来执行。 它们还提供各种池管理方法。

泳池管理

池存在各种管理方法。 您可以使用shutdown()池,该池将拒绝将来的所有提交,但将完全处理进程内执行,甚至还包括尚未开始但在关闭启动之前提交的进程。 您还可以更积极地执行shutdownNow()。 这也将阻止将来提交任何内容,但是它具有一些不同的显着行为。 它不会开始执行已提交但尚未开始的任务。 它们将在返回的列表中。 它还将尝试停止或更准确地说是当前正在执行任务的Thread.interrupt() 。 这是最大的努力,不能保证成功完成这些任务。

线程工厂

稍后,我们将进入java.util.concurrent.Executors构建器类,该类可以创建各种线程池配置,但首先让我们集中讨论使用ThreadFactory。 您需要利用Executor中ThreadFactory支持,并养成提供自己的习惯。 默认的ThreadFactory将为您提供一个递增编号的池命名方案,这在日志或其他监视中并不是很有用。 对于创建的第一个池,您将获得名为pool-1-thread-1pool-1-thread-2的线程 ,第二个以pool-2-thread-1开头的线程 ,等等。通过提供自己的ThreadFactory ,您可以具有名为ReportProcessingThread1HttpThread1的线程。 这是一个简单的例子:

private AtomicLong counter = new AtomicLong();
private String name;
public Thread newThread(Runnable r) {Thread t = new Thread(r);t.setName(name + counter.incrementAndGet());return t;
}

仅当创建新线程时才调用ThreadFactory 。 鉴于JDK线程池将尽可能重用线程,因此此类不能用于管理执行的开始。

执行器生成器方法

现在回到Executors实用程序构建器方法。 他们是:

  • newCachedThreadPool()将为您提供一个线程池,该线程池将在可能的情况下重用线程,并根据需要创建新线程,而没有配置的限制。
  • newFixedThreadPool(int nThreads)将为您提供一个线程池,该线程池将最多使用指定的线程数,但将接受与提交的任务一样多的任务,以便按提交顺序运行它们。
  • newScheduledThreadPool(int corePoolSize)专用于按延迟执行的定期计划来调度执行延迟的线程。 返回的线程池实现ScheduledExecutorService ,该服务公开了其他调度方法schedule(Runnable命令,长延迟,TimeUnit单位)scheduleAtFixedRate(Runnable命令,长initialDelay,长周期,TimeUnit单位)scheduleWithFixedDelay(Runnable命令,长initialDelay,长延迟, TimeUnit单位)
  • newSingleThreadExecutor()newSingleThreadScheduledExecutor() 。 这些对可以提交的任务数量没有限制,仅确保一次执行单个线程/任务。

最后,有一些帮助方法可用于从Runnable创建Callable实例。 这使我们进入了新创建的结构中,该结构允许线程抛出异常并返回值,这在我们之前非常痛苦的解决。 在下一篇文章中,我们将考虑这些以及它们如何与这些线程池一起使用。

参考: Java并发第3部分–来自我们JCG合作伙伴的Carfey Software博客上的 线程池 。

相关文章 :
  • Java并发教程–信号量
  • Java并发教程–重入锁
  • Java并发教程–可调用,将来
  • Java并发教程–阻塞队列
  • Java并发教程– CountDownLatch
  • Exchanger和无GC的Java
  • Java Fork / Join进行并行编程
  • 使用迭代器时如何避免ConcurrentModificationException
  • 改善Java应用程序性能的快速技巧

翻译自: https://www.javacodegeeks.com/2011/09/java-concurrency-tutorial-thread-pools.html

java线程池并发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Windows XP使用LC5(L0phtCrack)

LC5简介: LC5是国外一种很有名的密码破解软件,能破解用LM加密的SAM。可用它猜解2000\Xp\2003密码。它是著名的美国计算机安全公司Stake出品的Window/Unix密码查找软件LC4/LC5。 使用方法: 1,在主机里新建用户名,密码…

C++ 在屏幕上用星号打印菱形

粉丝提问&#xff1a;C 在屏幕上用星号打印菱形 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void pr_start(int _num) {int n0;int i 0;for (n 1; n < 2*_num; n) {int temp n;if (n > _num){temp - 2 * (n - …

mysql组件化_MySql笔记

1、数据库基础操作语句链接数据库&#xff1a;mysql -u root -p 123456;选择数据库&#xff1a;USE database_name;显示可以数据库&#xff1a;SHOW DATABASES;显示数据库所有表&#xff1a;SHOW TABLES;显示表的列&#xff1a;SHOW COLUMNS FROM table_name;2、检索数据检索单…

让我们回顾一下如何通过JDBC插入Clob或Blob

LOB是所有数据库以及JDBC中的PITA。 正确处理它们需要花费几行代码&#xff0c;并且可以确保最终会出错。 因为您必须考虑以下几点&#xff1a; 首先&#xff0c;LOB是繁重的资源&#xff0c;需要特殊的生命周期管理。 分配LOB后&#xff0c;最好“释放”它&#xff0c;以减轻…

Android JNI入门第五篇——基本数据类型使用

前面讲到了java和native数据类型&#xff0c;这里就开始做一下使用&#xff1a; 第一步&#xff1a;新建工程 第二部&#xff1a;书写 java方法&#xff1a; [java] view plaincopyprint? public class NativeMethod { static { System.loadLibrary("com…

使用微信开发者工具添加小程序底部导航栏报错

粉丝求助&#xff1a; 示例图&#xff1a; 看了这个页面&#xff0c;很明显这个页面引用的路径都有问题。 解决办法&#xff1a;

应用“Cain Abel”实现DNS欺骗

环境的搭建&#xff1a; 1&#xff0c;在Windows 7安装IIS服务&#xff0c;访问www.baidu.com或其他任意站点&#xff0c;保存首页文件至本地wwwroot文件夹中&#xff1b; &#xff08;1&#xff09;打开控制面板&#xff0c;找到“程序”&#xff0c;点进去 点击“打开或关闭…

java 线程池技术_Java线程池技术以及实现

public class DefaultThreadPool implements ThreadPool{//线程池最大限制数private static final int MAX_WORKER_NUMBERS 10;//线程池默认的数量private static final int DEFAULT_WORKER_NUMBERS 5;//线程池最小数量private static final int MIN_WORKER_NUMBERS 1;//这是…

Android killer软件闪退的解决办法?

解决办法&#xff1a; 重新下载安装一个版本比较新的。

css3 animation 动画属性简介

animation 动画属性介绍 animation 属性是一个简写属性&#xff0c;用于设置动画属性&#xff1a; 1. animation-name----规定需要绑定到选择器的 keyframe 名称。 语法&#xff1a;animation-name: keyframename|none&#xff1b; Keyframename&#xff1a;规定需要绑定到选择…

EditThisCookie使用

下载安装 http://www.cnplugins.com/uploads/plugins/201502/www.cnplugins.com_fngmhnnpilhplaeedifhccceomclgfbg_1_4_1_.crx从上面这个网址下载下来&#xff0c;下下来之后用Chrome插件伴侣制作成谷歌浏览器能直接添加的插件 使用 鼠标右键单击——>EditThisCookie&am…

ac算法 有什么用 Java_AC算法使用例子

/*** 实现测试&#xff1a;串匹配和词频统计功能*/public void largerTextExample(){String text "你好abc,ac,abc,def,ac,okt, ac,dfdfe, ac , what is it 你好啊,bc";String[] terms {"你好","ac", "abc", "bc"};for (…

eclipse中在类saolei.Test 中找不到main方法

粉丝提问&#xff1a;eclipse中在类saolei.Test 中找不到main方法 解决办法&#xff1a; eclipse设置自动保存或者CTRLS 建议使用更加智能的编译器IDEA

cdi 作用 spring_什么是CDI,它与@EJB和Spring有什么关系?

cdi 作用 spring简要概述了Java EE中的依赖项注入&#xff0c; Resource / EJB和Inject之间的区别以及它们与Spring的关系-主要是链接形式。 上下文依赖注入&#xff08;CDI&#xff0c; JSR 299 &#xff09;是Java EE 6 Web Profile的一部分&#xff0c;它本身基于Java依赖注…

Cookie和会话Session

Cookie和会话Session Cookie Cookie是识别客户端的特定用户。 1.每次HTTP请求的时候&#xff0c;客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的&#xff0c;第一次创建Session的时候&#xff0c;服务端会在HTTP协议中告诉客…

高速排序算法

高速排序算法作者 July 二零一一年一月四日------------------------------------------写之前&#xff0c;先说点题外话。每写一篇文章&#xff0c;我都会遵循下面几点原则&#xff1a;一、保持版面的尽量清晰&#xff0c;力保排版良好。二、力争所写的东西&#xff0c;清晰易…

java csv 导入数据库_java – 如何上传CSV文件然后自动将数据插入数据库?

我有基于Java的Spring MVC应用程序,它也使用Spring安全性.我正在使用hibernate作为此Web应用程序的ORM工具.以下是我的要求 –用户可以使用Web浏览器上传CSV文件.已知CSV文件的格式包含以下5个字段&#xff1a;userId, location, itemId, quantity, tranDate001, NY, 00A8D5, 2…

某小型校园网规划与设计要点(课程报告)

粉丝求助&#xff1a; 设计某小型校园网络&#xff0c;校园内覆盖4个大楼&#xff0c;分别教学楼&#xff0c;图书馆&#xff0c;办公室和学生宿舍楼&#xff0c;学校申请到B类私有地址为&#xff1a;172.16.8.0/21。要求&#xff1a;&#xff08;1&#xff09;不同大楼主机划分…

使用PHP管理SQL

php管理数据库 php连接数据库函数——mysqli_connect 格式&#xff1a;mysqli_connect(servername,user,pass,database) servername&#xff1a;数据库地址 user&#xff1a;数据库用户名 pass&#xff1a;数据库密码 database&#xff1a;数据库名 <?phpheader(conte…