JAVA多线程:线程池

JAVA多线程:线程池


1. 引言

前面的文章中,利用线程以及通过对Runnable接口的实现来执行指定的任务,例如:

public taskTest{
  public static void main(String[] args){
    Runnable task=new TaskClass();
    Thread tread1=new Thread(task);
    thread1.start();
  }
}

按照上述代码执行任务,对于单一任务是方便并且直观的。但是由于必须为每个任务创建一个线程,当我们面对大量的任务需要执行时,这种执行任务的方式是不高效的。Java提供Executor接口来执行线程池中的任务,提供ExecutorService接口来管理和控制任务。

2. 线程池

ExecutorService接口是Executor的子接口,可以通过调用Executors类中的静态方法来创建Executor对象,例如newFixedThreadPool和newCachedThreadPool可以用来创建线程池;excute方法用于执行线程,下面的表格将给出具体的方法和功能。

  • java.util.concurrent.Executor
方法功能
void execute(Runnable object)执行准备的任务线程

  • java.util.concurrent.ExecutorService
方法功能
void shutdown()关闭执行器,但允许完成执行其中的任务
List shutdownNow()立即关闭执行器,并返回尚未完成任务的清单
boolean isShutdown()如果执行器已经关闭则返回true
boolean isTerminated()如果线程池中的所有任务都被终止则返回true

  • java.util.concurrent.Executors
方法功能
ExecutorService newFixedThreadPool(int numberOfthreads)创建线程池,并具有固定的线程数量
ExecutorService newCachedThreadPool()创建线程池,按需创建新线程

下面给出创建线程池的示范:

import jav.util.concurrent.*;
public class executorTest{
  public static void main(String[] args){
    ExecutorService executor=Executors.newFixedThreadPool(2);//创建线程池
    /*执行线程*/
    executor.execute(new printChar('a',100));
    executor.execute(new printChar('b',100));
    executor.shutdown();
  }
}
/*任务类*/
class printChar implements Runnable{
  char c;
  int num;
  public printChar(char c, int num){
    this.c=c;
    this.num=num;
  }
  public void run(){
    for(int i=0;i<num;i++)
      System.out.println(c);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值