java 线程thread 拓展篇

一、线程组ThreadGroup
  
   在java中,创建线程时,新创建的线程默认属于创建它的组,Thread.currentThread().getThreadGroup().getName() 可以看到线程所属的组,  为了便于管理,在新建线程时也可以指定线程归入哪个线程组,通过ThreadGroup的interrupt()方法可以终止该组的所有线程,不必逐个线程线程
  ThreadGroup threadGroup = new ThreadGroup("group name");
  Thread thread1 =      new Thread(threadGroup, "thread name");

二、线程池ThreadPoolExecutor
  主要用途,先创建好一些线程,根据需要会自动创建,用于执行一些指定的任务,优点:不必执行任务时才去创建线程,

  例子,设计一个线程池,线程用于处理某任务

 /*1.创建一个任务类,必须实现runable接口*/
 public Task implement runnable{  
   private String value;
   public run(){
      // 任务要做的事情是把value输出到控制台
   System.out.print(value);
   }
  public Task(String v){
   value=v;
 }
 }
 /*2. demo类管理一个线程线,提供执行任务的入口,和关闭方法*/
publice Demo{
 ThreadPoolExecutor executor;  //线程池类
public Demo(){
	executor = new ThreadPoolExecutor(
          CORE_THREADS_PER_VOLUME, MAXIMUM_THREADS_PER_VOLUME, 
          THREADS_KEEP_ALIVE_SECONDS, TimeUnit.SECONDS, 
          new LinkedBlockingQueue<Runnable>(), threadFactory);
          /*hb:参数说明:
            corePoolSize: 线程池维护线程的最少数量
	maximumPoolSize:线程池维护线程的最大数量
	keepAliveTime: 线程池维护线程所允许的空闲时间
	unit: 线程池维护线程所允许的空闲时间的单位
	workQueue: 线程池所使用的缓冲队列
	handler: 线程池对拒绝任务的处理策略
           */      
      // This can reduce the number of running threads
      executor.allowCoreThreadTimeOut(true);
  }
/* 执行任务 */
synchronized void execute( Runnable task) {
  
      executor.execute(task);  // chb:通过线程池执行一个任务,任务是实现runable接口
      /*当一个任务通过execute(Runnable)方法欲添加到线程池时:

如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。
如果此时线程池中的数量等于 corePoolSize,但是缓冲队列 workQueue未满,那么任务被放入缓冲队列。
如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量小于maximumPoolSize,建新的线程来处理被添加的任务。
如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。
也就是:处理任务的优先级为:
核心线程corePoolSize、任务队列workQueue、最大线程maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。
*/ 
  }
/* 关闭线程线*/
synchronized void shutdown() {
     executors.shutdown(); 
    } 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值