Java自带的Future多线程模式

开发 后端
如果你用过Java并发包也许对Future(interface)比较熟悉了,其实Future 本身是一种被广泛运用的并发设计模式,可在很大程度上简化需要数据流同步的并发应用开发。

在Java5后,提供了大量处理多线程的接口,以前只是简单的使用其线程池,最近发现Future模式也有。

只贴出了部分代码:

定义池:

  1. private static final ExecutorService worker = Executors.newFixedThreadPool(N);// 线程池 
  2.     private static List<Future<?>> futureList = new ArrayList<Future<?>>();// 工作中的线程 

使用线程池:

  1. futureList.add(worker.submit(this)); 

结束线程:

  1. // 结束线程池中的线程执行(中断) 
  2.     public static void cancel() { 
  3.         for (Future<?> f : futureList) { 
  4.             f.cancel(true); 
  5.         } 
  6.     } 

注:Future为线程的执行结果票据,当使用Callable方式执行时可以得到线程的执行结果f.get(),同时也可以控制某线程的结束和执行状态。当使用Runnable方式执行时,得到结果是空,但也可以对线程进行控制。

补充:
应该是调用了线程的中断方法Thread.currentThread().interrupt();但并不像stop方法那样立即结束掉子线程,而是改变了中断的信号量Thread.interrupted(),在阻塞的线程会抛出InterruptedException异常,但是在非阻塞的条件下子线程会继续执行,需要在循环中自己判断信号量来抛出异常。

原文链接:http://sunnymoon.iteye.com/blog/1260604

编辑推荐:

  1. JAVA设计模式:工厂模式之简单工厂
  2. 多核平台下的Java优化
  3. Java枚举常见7种用法
  4. 详解JavaFX架构与框架
  5. AIX环境下的Java性能调优
责任编辑:林师授 来源: sunnymoon的博客
相关推荐

2022-06-02 11:12:10

CallableFuture

2013-05-23 15:59:00

线程池

2022-03-31 07:52:01

Java多线程并发

2021-04-12 08:56:00

多线程Future模式

2009-03-12 10:52:43

Java线程多线程

2021-09-11 15:26:23

Java多线程线程池

2009-06-29 17:49:47

Java多线程

2021-12-26 18:22:30

Java线程多线程

2012-02-14 12:31:27

Java

2023-11-22 08:37:40

Java线程池

2009-06-29 18:03:15

Java多线程线程的生命周期

2009-08-12 13:22:44

Singleton模式

2010-03-15 17:56:23

Java多线程

2016-11-10 16:30:22

Java多线程

2012-09-21 13:30:51

Java多线程Java发展

2009-06-16 13:48:42

Java多线程

2009-06-11 11:17:59

Java多线程

2015-11-18 18:56:36

Java多线程处理

2010-03-16 17:16:38

Java多线程

2009-07-21 17:09:47

ASP.NET多线程
点赞
收藏

51CTO技术栈公众号