Executor框架管理线程

来源:互联网 发布:淘宝怎么用版权投诉 编辑:程序博客网 时间:2024/06/13 04:28

Executor接口,用来管理Runnable对象的执行,Executor对象创建并管理一组Runnable对象的线程,这组线程就做线程池(thread pool).优点是Executor对象能复用了已经有的线程,减少为每个任务创建新线程的开销,提高性能,它能通过优化线程的数量,提高程序性能,保证处理器一直处于忙碌状,而不必创建过多的线程使程序资源耗尽。

具体的做法如下:

1 声明一个execute()方法,接收一个Runnable实参,

2  Executor会将传递给它的execute方法的每个Runnable对象赋予线程池中的某个可用线程。

3  如果没有可用线程,Executor会创建一个新线程,或者等待某个线程成为可用的,再将其赋予Runnable对象。

  1. import java.util.concurrent.Executors;  
  2. import java.util.concurrent.ExecutorService;  
  3.   
  4. public class TaskExecutor  
  5. {  
  6.    public static void main( String[] args )  
  7.    {  
  8.       // create and name each runnable  
  9.       PrintTask task1 = new PrintTask( "task1" );  //runnable对象
  10.       PrintTask task2 = new PrintTask( "task2" );  
  11.       PrintTask task3 = new PrintTask( "task3" );  
  12.           
  13.       System.out.println( "Starting Executor" );  
  14.   
  15.       // create ExecutorService to manage threads  
  16.       ExecutorService threadExecutor = Executors.newCachedThreadPool();  
  17.   
  18.       // start threads and place in runnable state  
  19.       threadExecutor.execute( task1 ); // start task1     
  20.       threadExecutor.execute( task2 ); // start task2  
  21.       threadExecutor.execute( task3 ); // start task3  
  22.   
  23.       // shut down worker threads when their tasks complete  
  24.       threadExecutor.shutdown();   
  25.   
  26.       System.out.println( "Tasks started, main ends.\n" );  
  27.    } // end main  
  28. // end class TaskExecutor  

0 0
原创粉丝点击