JAVA原生线程池的基本了解


一、线程池

        线程是程序的最小执行单位,当有需要大量而且需要短时间执行的程序的时候就需要用到线程池,因为线程的每次创建和销毁是需要开销的,如果线程创建和消耗需要的时间和开销远远的大于了线程本来执行它功能所需要的时间和开销,那么每次都创建一个线程这样是不划算的。我们可以在一开始的时候就将很多的线程创建出来,然后在每次需要的时候直接将参数传入,直接在线程池里拿出一个线程执行。执行完后又放到线程池里,这样可以大大的加快访问的时间和速度。并发可以加快处理速度


java自带的线程池有这几种

1、newFixedThreadPool创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。 

2、newCachedThreadPool

3、newSingleThreadExecutor

4、newScheduleThreadPool

</pre><span style="font-size:18px;"></span><p><span style="font-size:18px;">线程类:</span></p><p class="p1"><pre name="code" class="java">public class MyThread implements Runnable{
	
	String name;


	public  MyThread(String name){
		this.name=name;
	}
	
	@Override 
	public void run(){
	
		System.out.println("Thread"+name+" Start excution");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("Thread"+name+" excution Over ");
		
	}

}
public static void main(String[] args){
		ExecutorService threadPool= Executors.newFixedThreadPool(4);
	
		for(int i=0;i<5;i++){
			MyThread cur=new MyThread(String.valueOf(i));
			threadPool.execute(cur);
		}
	}

输出结果:

Thread0 Start excution
Thread2 Start excution
Thread1 Start excution
Thread3 Start excution
Thread0 excution Over 
Thread3 excution Over 
Thread4 Start excution
Thread1 excution Over 
Thread2 excution Over 
Thread4 excution Over 

分析一下:我设置FixedThreadPool的线程池的大小是4,那么在前4个线程提交之后就会立刻执行,而第5个线程提交就会放在等待队列里面,等线程池里的线程执行完后就提交开始执行。然后最后执行完。FixedThreadPool适合慢慢启动,访问慢慢增大的情况,在达到最大的最高峰的时候就停止,保持最大的线程数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值