下面是一段对线程池的简单任务和理解。有兴趣的人可以调整对应的几个参数来测试,加深理解

 

 

  1. public class a extends Thread { 
  2.     private static String url = null
  3.     private static int count=0
  4.      
  5.     public a(String url) { 
  6.         this.url = url; 
  7.     } 
  8.  
  9.     public static void main(String[] args) throws IOException { 
  10.  
  11.          
  12.         //这句话的意思是 
  13.         //初始线程池是3各线程 
  14.         //如果一下子任务过多,就创建线程但是不能超过5各 
  15.         //也就是说最多可以一次处理5各任务 
  16.         //如果一次来30各任务,第一次只能处理5个任务 
  17.         //剩下的任务中有4各可以放到队列里面 
  18.         //如果队列都放不下,拒绝接受任务 
  19.         //因此来了30各任务,只能处理9个 
  20.         ThreadPoolExecutor te = new ThreadPoolExecutor(355
  21.                 TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(4), 
  22.                 new ThreadPoolExecutor.DiscardOldestPolicy()); 
  23.         for (int i = 0; i < 30; i++) { 
  24.             te.execute(new a("http://baidu.com")); 
  25.         } 
  26.     } 
  27.  
  28.     public static void senconn(String url) throws IOException { 
  29.         URL u = new URL(url); 
  30.         URLConnection connection = u.openConnection(); 
  31.         connection.setDoOutput(true); 
  32.         BufferedReader br = new BufferedReader(new InputStreamReader( 
  33.                 connection.getInputStream())); 
  34.         StringBuffer sb = new StringBuffer(); 
  35.  
  36.         String line = null
  37.  
  38.         while ((line = br.readLine()) != null) { 
  39.             sb.append(line); 
  40.         } 
  41.         // System.out.println(sb.toString()); 
  42.         System.out.println(Thread.currentThread().getName() + "::" 
  43.                 + "execute..."); 
  44.  
  45.     } 
  46.      
  47.     @Override 
  48.     public void run() { 
  49.         // TODO Auto-generated method stub 
  50.         try { 
  51.             count++; 
  52.             System.out.println(count); 
  53.             try { 
  54.                 Thread.sleep(2000); 
  55.                 senconn(url); 
  56.             } catch (InterruptedException e) { 
  57.                 e.printStackTrace(); 
  58.             } 
  59.         } catch (IOException e) { 
  60.             // TODO Auto-generated catch block 
  61.         } 
  62.          
  63.     }