博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程之线程池
阅读量:7016 次
发布时间:2019-06-28

本文共 1106 字,大约阅读时间需要 3 分钟。

Java多线程之线程池

首先强调一点,池是一种设计模式,也就是说好多的成本比较高的连接了这些为了提供性能,用一个池来做缓存。比如说字符串池,比如说数据库连接池,这里介绍下线程池。

系统启动一个线程的成本还是比较高的,因为它涉及和操作系统交互。具体的设计思路和数据库连接池差不多:

线程池在系统启动时创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池会启动一个线程来执行该对象的run方法,当run方法执行结束后,该线程并不会死亡,再次返回到池里面成为了空闲状态,等待执行下一个Runnable对象的run方法。

JDK1.5之后,Java内建支持线程池。使用线程池来执行线程任务的步骤如下:
1,调用Executors类的静态工厂方法来创建一个ExecutorService对象,该对象代表一个线程池。
2,创建Runnable实现类,当然也可以创建Callable实现类,作为线程执行任务
3,调用ExecutorService对象的submit方法来提交上面的Runnable实例
4,当不想在提交任何任务时调用ExecutorService对象的shutdown方法来关闭线程池
具体代码如下:
import java.util.concurrent.*;// 实现Runnable接口来定义一个简单的线程类class LinkinThread implements Runnable{	public void run()	{		for (int i = 0; i < 100; i++)		{			//使用了池以后,线程的命名就成了“pool-1-thread-1”这样子			System.out.println(Thread.currentThread().getName() + " " + i);		}	}}public class ThreadPoolTest{	public static void main(String[] args) throws Exception	{		// 创建一个具有固定线程数(6)的线程池		ExecutorService pool = Executors.newFixedThreadPool(6);		// 向线程池中提交两个线程		pool.submit(new LinkinThread());		pool.submit(new LinkinThread());		// 关闭线程池		pool.shutdown();	}}
      

转载于:https://www.cnblogs.com/LinkinPark/p/5233095.html

你可能感兴趣的文章
yii2 数据库操作详解(转载)
查看>>
JS函数
查看>>
c语言判断用户是否输入-非阻塞函数kbhit
查看>>
Hive基础
查看>>
(转)Sharepoint学习笔记—Debug--寻找 WSS_Logging下的ULSTraceLog
查看>>
Markdown anywhere
查看>>
内置函数了解一下
查看>>
Java:关于implements Serializable的警告问题
查看>>
Windows Server 2012虚拟化性能及十大重要功能
查看>>
Swift -- 结构体、类、枚举继承protocol协议
查看>>
Django基础之render()
查看>>
700. Search in a Binary Search Tree - Easy
查看>>
前端跨域请求方法整理
查看>>
用http-server开启本地服务
查看>>
CSS文本
查看>>
在windows下面配置redis集群遇到的一些坑
查看>>
C#本质论全书源码
查看>>
C#冒泡排序
查看>>
HDU 4054 Hexadecimal View【模拟】【字符串处理】
查看>>
配置cordova的android开发环境(无android studio)
查看>>