黑马程序员:Java基础总结----线程池及java5的线程并发库
来源:互联网 发布:centos 7 内核版本 编辑:程序博客网 时间:2024/05/18 18:00
黑马程序员:Java基础总结
线程池及java5的线程并发库
ASP.Net+Android+IO开发、.Net培训、期待与您交流!
线程池
Executors 方法摘要
返回用于创建新线程的默认线程工厂。
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程。
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程,并在需要时使用提供的 ThreadFactory 创建新线程。
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
返回
返回
返回用于创建新线程的线程工厂,这些新线程与当前线程具有相同的权限。
返回一个将所有已定义的
返回一个将所有已定义的
在未来某个时间执行给定的命令。
创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。
线程池的概念:
首先创建一些线程,它们的集合称为线程池,当服务器接受到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程,而是将该线程还回到线程池中。
在线程池的编程模式下,任务是提交给整个线程池,而不是直接交给某个线程,线程池在拿到任务后,它就在内部找有无空闲的线程,再把任务交给内部某个空闲的线程,这就是封装。记住,任务是提交给整个线程池,一个线程同时只能执行一个任务,但可以同时向一个线程池提交多个任务。
static ThreadFactory
defaultThreadFactory()
返回用于创建新线程的默认线程工厂。
static ExecutorService
newCachedThreadPool()
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
static ExecutorService
newCachedThreadPool(ThreadFactory threadFactory)
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程。
static ExecutorService
newFixedThreadPool(int nThreads)
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
static ExecutorService
newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。
static ScheduledExecutorService
newScheduledThreadPool(int corePoolSize)
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
static ScheduledExecutorService
newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
static ExecutorService
newSingleThreadExecutor()
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
static ExecutorService
newSingleThreadExecutor(ThreadFactory threadFactory)
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程,并在需要时使用提供的 ThreadFactory 创建新线程。
static ScheduledExecutorService
newSingleThreadScheduledExecutor()
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
static ScheduledExecutorService
newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
static
<T> Callable<T>
privilegedCallable(Callable<T> callable)
返回
Callable
对象,调用它时可在当前的访问控制上下文中执行给定的 callable 对象。static
<T> Callable<T>
privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
返回
Callable
对象,调用它时可在当前的访问控制上下文中,使用当前上下文类加载器作为上下文类加载器来执行给定的 callable 对象。static ThreadFactory
privilegedThreadFactory()
返回用于创建新线程的线程工厂,这些新线程与当前线程具有相同的权限。
static ExecutorService
unconfigurableExecutorService(ExecutorService executor)
返回一个将所有已定义的
ExecutorService
方法委托给指定执行程序的对象,但是使用强制转换可能无法访问其他方法。static ScheduledExecutorService
unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
返回一个将所有已定义的
ExecutorService
方法委托给指定执行程序的对象,但是使用强制转换可能无法访问其他方法。接口 ExecutorService 继承的方法
void
execute(Runnable command)
在未来某个时间执行给定的命令。
ExecutorService service = Executors.newCachedThreadPool();
for (int i = 1; i <= 10; i++) {
final int sequence = i;
// 仔细品味runnable对象放到循环里面和外面的区别,为了让每个对象有自己独立的编号
service.execute( new Runnable() {
public void run() {
try {
Thread. sleep(200);
} catch (Exception e) {
}
for (int j = 1; j <= 5; j++) {
System. out.println(Thread.currentThread().getName()
+ "is serving " + sequence + " task:"
+ "loop of " + j);
}
}
});
接口 ScheduledExecutorService
ScheduledFuture<?>
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。
ScheduledExecutorService scheduledService = Executors
. newScheduledThreadPool(1);
scheduledService.scheduleAtFixedRate( new Runnable() {
public void run() {
System. out .println("bomb!!!" );
}
}, 5, 1, TimeUnit. SECONDS );
ASP.Net+Android+IO开发、.Net培训、期待与您交流!
- 黑马程序员:Java基础总结----线程池及java5的线程并发库
- Java基础加强之 Java5的线程并发库
- 多线程及java5的线程并发库
- 黑马程序员——Java基础---线程的另一个总结(5)--线程池,线程定时器
- 【Java多线程与并发库】8.java5线程并发库之线程池的应用
- 【Java多线程与并发库】8.java5线程并发库之线程池的应用
- 黑马程序员——Java5中的线程并发库(一)---概述、线程池、Callable和Future、Lock和Condition
- 黑马程序员-Java基础总结19——线程并发库与传统计时器
- java5线程并发库
- java5 线程并发库
- 黑马程序员-Java基础之多线程总结
- java--加强之 Java5的线程并发库
- 黑马程序员 – 学习Java5线程并发库(3) -- 2013.1.1
- 黑马程序员 – 学习Java5线程并发库(4) -- 2013.1.2
- 黑马程序员 – 学习Java5线程并发库(5) -- 2013.1.3
- 黑马程序员 – 学习Java5线程并发库(6) -- 2013.1.4
- 黑马程序员 – 学习Java5线程并发库(7) -- 2013.1.5
- 黑马程序员 – 学习Java5线程并发库(7) -- 2013.1.5
- window server 2012 英文版上安装中文语言包
- TCP/IP面试题(一)
- Android WebView 获取网页数据(html)
- 近阶段工作总结
- 磁珠Ferrite Beads,简写FB
- 黑马程序员:Java基础总结----线程池及java5的线程并发库
- cacti分组发飞信模块开发
- Java学习笔记之三(按值传递和按引用传递)
- 开发者兴趣调查:平板与手机应用开发兴趣持平
- RSYNC 一例
- PADS Layout 为“GND”网络增加过孔的方法
- 在Hibernate中“有相同ID的不同对象在session中被锁定”的情况处理。
- 图像识别练习(字符验证码、车牌号、身份证号)
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐