java线程池教程_Java基础教程——线程池
启动新线程,需要和操作系统进行交互,成本比较高。
使用线程池可以提高性能——
线程池会提前创建大量的空闲线程,随时待命执行线程任务。在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务。(这个任务,就是Runnable的run()方法,或Callable的call()方法)。
Java 5之前需要手动实现线程池,Java 5之后直接支持线程池。
Java.util.concurrent. Executors:用于创建线程池
|--|--Executors.newFixedThreadPool():创建有固定线程数量的线程池
Java.util.concurrent.ExecutorService:尽快执行线程的线程池(有空闲线程就即刻执行)
ExecutorService对象的submit()方法用于提交Runnable或Callable对象
不再提交任务是,调用ExecutorService对象的shutdown()方法关闭线程池,线程池不再接受新的任务,但会把之前的任务执行完毕。
package ahjava.p06thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
// Executors:用于创建线程池
// .newFixedThreadPool():创建有固定线程数量的线程池
// ExecutorService:尽快执行线程的线程池(有空闲线程就即刻执行)
public class _51ThreadPoolTest {
public static void main(String[] args) throws Exception {
// 创建一个具有固定线程数(6)的线程池
ExecutorService pool = Executors.newFixedThreadPool(6);
Runnable target = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
String name = Thread.currentThread().getName();
System.out.println(name + ":" + i);
}
}
};
// 向线程池中提交两个线程
pool.submit(target);
pool.submit(target);
// 关闭线程池
pool.shutdown();
}
}
java线程池教程_Java基础教程——线程池相关推荐
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- java io流 教程_Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...
- java多线程教程_java 基础教程之多线程详解及简单实例
java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...
- java视频教程千峰_java基础教程-Java开发入门视频教程-千锋教育视频资源库
第1节 - Java由来及语言特点 点击播放 第2节 - Java的执行机制及第一个应用程序 点击播放 第3节 - 类的阐述及Package相关 点击播放 第4节 - Java的编码规范 点击播放 第 ...
- java引入string类_Java基础教程——String类
String类 Java程序中的所有字符串字面值(如 "abc" )都是String的实例 字符串是常量(因为 String 对象是不可变的,所以可以共享) 字符串的本质是字符数组 ...
- java 反射教程_Java基础教程——反射机制
Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...
- java substring截取字符串_java基础教程之字符串的介绍,比较重要的一个知识点【下】...
字符串操作 1.获取子字符串 通过String类的substring()方法可对字符串进行截取.这些方法的共同点就是都是利用字符串的下标进行截取.应明确字符串下标是从0开始的. substring() ...
- java jdk使用教程_Java基础教程——安装JDK
使用[jdk-8u144-windows-x64.exe] 下载地址: 安装后测试:打开cmd,输入[java -version] C:\Users\Administrator>java -ve ...
- java 缓存教程_Java基础教程——缓冲流
缓冲流 "缓冲流"也叫"包装流",是对基本输入输出流的增强: 字节缓冲流: BufferedInputStream , BufferedOutputStream ...
最新文章
- windows10 自动开机、关机
- oracle何时使用to_date函数
- java 枚举 被继承_enum不能被继承
- May 18:PHP 用到的学习工具
- java 编辑我的世界_Editing Java版1.13 (section)
- Linux文件atime ctime mtime
- Jena Fuseki安装完成后不能添加数据库
- 正则表达式 (grep)
- 电控无碳小车需要单片机吗_电控无碳小车的设计及研究
- iOS多线程系列之GCD栅栏(barrier)实现同步锁
- BZOJ2300[HAOI2011] 防线修建
- 如何更改 Windows XP 中的 Windows 登录屏幕保护程序
- 入门JSP第一步,看这里~
- oracle经典50题及答案,Oracle经典练习题及标准答案
- P8195 [传智杯 #4 决赛] 小智的疑惑 —KMP
- winform pdf转图片.jpg或.png(O2S.Components.PDFRender4NET)
- turtlepen画出小黄人
- QQ(微信)一次性发送多条信息(连续发520遍我爱你)
- 9.什么是向上转型?什么是向下转型?
- java需要打开开机启动项吗_开机启动项
热门文章
- c语言编程题解题思路,简单思路清晰的C语言解题过程
- lunix命令向文件添加内容的几种方法
- 推荐两款剪切板增强工具,Ditto与CopyQ
- 浅谈parseFloat(parseInt)与Number
- 写于莫言获得诺贝尔文学奖之际
- oracle查看编码格式以及修改字符集编码
- 视图类中CMyDoc* GetDocument() const编译时错误:缺少“;”(在“*”的前面)
- BugFree邮件设置
- gh-ost的使用和添加索引
- 金三银四什么样的面试更有效?