线程池

线程池

系统启动一个新的线程的成本是很高的,因为涉及到与操作系统的交互,在这种情况下,使用线程池很好的提高性能,尤其是程序中需要很多生存期很短的线程,更加应该考虑使用线程池
与数据库连接池相同的是,线程池在程序启动的时候就创建了大量的空闲线程,程序将一个Runnable对象传递给线程池,线程池就会启动一条线程执行该对象的Run方法,当润方法执行结束以后,该线程不会死亡,而是再次返回线程池成为空暇线程,继续等待下一个Runnable对象的run方法.
JDK1.5以后提供了ExecutorService对象来代表线程池
Executor 工厂产生线程池,该工厂通过几个静态方法产生线程池:
newCacheThreadPool:创建一个具有缓存功能的线程池,创建的线程将会被缓存到线程池中
newFixedThreadPool:创建可以重用的可以,具有固定线程数的线程池
newSingleThreadExecutor:创建单线程的线程池
newScheduledExecutor:固定数量,可以在指定延迟后执行任务
newSingleScheduledExecutor:创建单线程的线程池,可以在制定延迟后执行任务

package org.thread.threadpool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 线程池
 *
 * */
public class ThreadPoolTest {
          public static void main(String[] args) {
                   //池中10个线程
          ExecutorService executorService =  Executors.newFixedThreadPool(10);
          
          //创建Runnable对象
          ThreadTRunnable threadTRunnable = new ThreadTRunnable();
          //将Runnable实例给线程池,底层进行线程包装,直接放在池子中,会立马通知cpu进行执行,池子不会结束
          executorService.submit(threadTRunnable);
          executorService.submit(threadTRunnable);
          executorService.submit(threadTRunnable);
          executorService.submit(threadTRunnable);
          }
}

package org.thread.threadpool;
public class ThreadTRunnable implements Runnable{
          @Override
          public void run() {
                   for (int i = 0; i < 10; i++) {
                             System.out.println(Thread.currentThread().getName());
                   }
          }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值