概述
黑马程序员:Java基础总结
线程池及java5的线程并发库
ASP.Net+Android+IO开发
、
.Net培训
、期待与您交流!
线程池
线程池的概念:
首先创建一些线程,它们的集合称为线程池,当服务器接受到一个客户请求后,就从线程池中取出一个空闲的线程为之服务,服务完后不关闭该线程,而是将该线程还回到线程池中。
在线程池的编程模式下,任务是提交给整个线程池,而不是直接交给某个线程,线程池在拿到任务后,它就在内部找有无空闲的线程,再把任务交给内部某个空闲的线程,这就是封装。记住,任务是提交给整个线程池,一个线程同时只能执行一个任务,但可以同时向一个线程池提交多个任务。
Executors 方法摘要 | ||
---|---|---|
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
| privilegedCallable(Callable<T> callable) 返回 Callable 对象,调用它时可在当前的访问控制上下文中执行给定的 callable 对象。 | |
static
| 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的线程并发库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复