java 线程 callable

本文介绍了一个使用Java中的Callable接口实现线程并发处理的例子。通过创建CallableTest类来定义耗时任务,RunTest类作为调用方,利用ExecutorService进行多线程并发调用并获取结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 线程类:  
  2. /** 
  3.  * 类名称:CallableTest.java 
  4.  * 类描述: 
  5.  * 作    者:why 
  6.  * 时    间:2016年11月7日 
  7.  */  
  8. public class CallableTest implements Callable<String> {  
  9.     //接收传来的值  
  10.     private String str;  
  11.     public CallableTest(String str){  
  12.         super();  
  13.         this.str = str;  
  14.     }  
  15.     @Override  
  16.     public String call() throws Exception {  
  17.         //要执行的耗时操作,为了体验效果,没调用一次,休眠1000ms  
  18.         Thread.sleep(1000);  
  19.         return str;  
  20.     }  
  21.       
  22. }  
  23.   
  24.   
  25. 调用类:  
  26. /** 
  27.  * 类名称:RunTest.java 
  28.  * 类描述: 
  29.  * 作    者:why 
  30.  * 时    间:2016年11月7日 
  31.  */  
  32. public class RunTest {  
  33.     public static void main(String[] args) {  
  34.         //创建线程池  
  35.         ExecutorService ex=Executors.newCachedThreadPool();  
  36.         List<CallableTest> taskList = new ArrayList<CallableTest>();  
  37.         long now=System.currentTimeMillis();  
  38.         taskList.add(new CallableTest("1"));  
  39.         taskList.add(new CallableTest("2"));  
  40.         taskList.add(new CallableTest("3"));  
  41.         taskList.add(new CallableTest("4"));  
  42.         try {  
  43.             //调用线程,并且接收线程返回的结果  
  44.             List<Future<String>> as =ex.invokeAll(taskList);  
  45.             for(Future<String> f:as){  
  46.                 //打印返回结果  
  47.                 System.out.println(f.get());  
  48.             }  
  49.         } catch (InterruptedException e) {  
  50.             e.printStackTrace();  
  51.         } catch (ExecutionException e) {  
  52.             e.printStackTrace();  
  53.         }  
  54.         System.out.println((System.currentTimeMillis()-now));  
  55.     }  
  56. }  
  57.   
  58.   
  59. 输出结果:  
  60. 1  
  61. 2  
  62. 3  
  63. 4  
  64. 1003(耗时)  
  65.   
  66.   
  67. 正常情况下,执行4次所用时间应给是4000ms,而并发调用,用时1003ms。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值