java线程池

1、为什么要用程池:一、减少线程创建和销毁开销 二、当前任务与主线程隔离,实现和主线程异步执行


2、线程池分类:

  Java类库提供了许多静态方法来创建一个线程池:

a、newFixedThreadPool 创建一个固定长度的线程池,当到达线程最大数量时,线程池的规模将不再变化。
b、newCachedThreadPool 创建一个可缓存的线程池,如果当前线程池的规模超出了处理需求,将回收空的线程;当需求增加时,会增加线程数量;线程池规模无限制。
c、newSingleThreadPoolExecutor 创建一个单线程的Executor,确保任务对了,串行执行
d、newScheduledThreadPool 创建一个固定长度的线程池,而且以延迟或者定时的方式来执行,类似Timer;

3、

package com.chen.threadpool;

import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestThreadpool_01 {
  public static void main(String[] args) {
	/*ExecutorService  es = Executors.newCachedThreadPool();
	
	int cpunums = Runtime.getRuntime().availableProcessors();//获取当前系统cpu数目
	System.out.println(cpunums);
	ExecutorService  ex = Executors.newFixedThreadPool(cpunums);
	
	while(true){
//		ex.execute(new Handle());
	}*/
	  
	  testcachepool();
  }
	
  public static  void testcachepool(){
	  System.out.println("Main: Starting at: "+ new Date());  
	  ExecutorService exs = Executors.newCachedThreadPool();
	  for(int i=0;i<10;i++){
		  exs.execute(new Handle(String.valueOf(i)));
	  }
	  exs.shutdown();//执行到此处不会马上关闭线程池,但不能向线程池继续添加线程
	  
	  System.out.println("Main: Finished all threads at"+ new Date());  
  }
	
}


class  Handle implements  Runnable{
    private String name;
    
	public Handle(String name) {
		super();
		this.name = "Thread "+name;
	}

	public void run() {
		// TODO Auto-generated method stub
		System.out.println( name +" Start. Time = "+new Date());  
        processCommand();  
        System.out.println( name +" End. Time = "+new Date());  
    }  
     private void processCommand() {  
            try {  
                Thread.sleep(1000);  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
        }  
     @Override  
        public String toString(){  
            return this.name;  
        }     
	}
	

从上面的结果可以看出:

1、主线程的执行与线程池里的线程分开,有可能主线程结束了,但是线程池还在运行

2、放入线程池的线程并不一定会按其放入的先后而顺序执行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值