- 浏览: 981217 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
callable,future,futureTask基础:http://www.cnblogs.com/dolphin0520/p/3949310.html
线程池:http://cuisuqiang.iteye.com/blog/2019372
主类:
callable+future
callable+futureTask
Callable:
测试结果:
UpdateCallable sleep time:6000
InsertCallable sleep time:12000
UpdateCallable up
InsertCallable up
is over!
线程池:http://cuisuqiang.iteye.com/blog/2019372
主类:
callable+future
public class TestFuture { public static void main(String[] args) { ExecutorService threadPool = Executors.newCachedThreadPool(); Future<Boolean> uFuture = threadPool.submit(new UpdateCallable(6000)); Future<Boolean> IFuture = threadPool.submit(new InsertCallable(12000)); try { threadPool.shutdown();//直到线程执行完毕 boolean flag = true; while(flag){ if(uFuture.get()&&IFuture.get()){ flag = false; System.out.println("is over!"); } } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
callable+futureTask
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; public class testFutureTask { public static void main(String[] args) { ExecutorService threadPool = Executors.newCachedThreadPool(); UpdateCallable utask = new UpdateCallable(6000); InsertCallable itask = new InsertCallable(12000); FutureTask<Boolean> UfutureTask = new FutureTask<Boolean>(utask); FutureTask<Boolean> IfutureTask = new FutureTask<Boolean>(itask); threadPool.submit(UfutureTask); threadPool.submit(IfutureTask); try { threadPool.shutdown();//直到线程执行完毕 boolean flag = true; while(flag){ if(UfutureTask.get()&&IfutureTask.get()){ flag = false; System.out.println("is over!"); } } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
Callable:
import java.util.concurrent.Callable; public class InsertCallable implements Callable<Boolean> { private Integer time = 3000; public InsertCallable(Integer time) { super(); this.time = time; } public Boolean call() throws Exception { System.out.println("InsertCallable sleep time:" + time); Thread.sleep(time); System.out.println("InsertCallable up"); return true; } } import java.util.concurrent.Callable; public class UpdateCallable implements Callable<Boolean> { private Integer time = 3000; public UpdateCallable(Integer time) { super(); this.time = time; } public Boolean call() throws Exception { System.out.println("UpdateCallable sleep time:" + time); Thread.sleep(time); System.out.println("UpdateCallable up"); return true; } }
测试结果:
UpdateCallable sleep time:6000
InsertCallable sleep time:12000
UpdateCallable up
InsertCallable up
is over!
发表评论
-
Executors解析
2017-04-07 14:38 1246ThreadPoolExecutor解析一(核心线程池数量、线 ... -
ScheduledThreadPoolExecutor解析三(关闭线程池)
2017-04-06 20:52 4451ScheduledThreadPoolExecutor解析一( ... -
ScheduledThreadPoolExecutor解析二(任务调度)
2017-04-06 12:56 2117ScheduledThreadPoolExecutor解析一( ... -
ScheduledThreadPoolExecutor解析一(调度任务,任务队列)
2017-04-04 22:59 4988Executor接口的定义:http://donald-dra ... -
ThreadPoolExecutor解析四(线程池关闭)
2017-04-03 23:02 9101Executor接口的定义:http: ... -
ThreadPoolExecutor解析三(线程池执行提交任务)
2017-04-03 12:06 6082Executor接口的定义:http://donald-dra ... -
ThreadPoolExecutor解析二(线程工厂、工作线程,拒绝策略等)
2017-04-01 17:12 3036Executor接口的定义:http://donald-dra ... -
ThreadPoolExecutor解析一(核心线程池数量、线程池状态等)
2017-03-31 22:01 20514Executor接口的定义:http://donald-dra ... -
ScheduledExecutorService接口定义
2017-03-29 12:53 1504Executor接口的定义:http://donald-dra ... -
AbstractExecutorService解析
2017-03-29 08:27 1073Executor接口的定义:http: ... -
ExecutorCompletionService解析
2017-03-28 14:27 1586Executor接口的定义:http://donald-dra ... -
CompletionService接口定义
2017-03-28 12:39 1062Executor接口的定义:http://donald-dra ... -
FutureTask解析
2017-03-27 12:59 1326package java.util.concurrent; ... -
Future接口定义
2017-03-26 09:40 1193/* * Written by Doug Lea with ... -
ExecutorService接口定义
2017-03-25 22:14 1159Executor接口的定义:http://donald-dra ... -
Executor接口的定义
2017-03-24 23:24 1672package java.util.concurrent; ... -
简单测试线程池拒绝执行任务策略
2017-03-24 22:37 2025线程池多余任务的拒绝执行策略有四中,分别是直接丢弃任务Disc ... -
JAVA集合类简单综述
2017-03-23 22:51 920Queue接口定义:http://donald-draper. ... -
DelayQueue解析
2017-03-23 11:00 1733Queue接口定义:http://donald-draper. ... -
SynchronousQueue解析下-TransferQueue
2017-03-22 22:20 2133Queue接口定义:http://donald-draper. ...
相关推荐
在实际开发中,ExecutorService(如ThreadPoolExecutor)经常与Future和FutureTask一起使用,因为ExecutorService可以提交Runnable或Callable任务,并返回Future,从而实现对任务的异步处理和结果获取。例如: ```...
Java使用Callable和Future创建线程操作示例主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项。 首先,Java 5开始,Java提供了...
Runnable、Callable、Future、FutureTask有什么关联.docx
通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则。日志:收集、整理服务器的日志信息,提供给管理员查看,并作为异常判断、故障排查的依据。进程:监控服务器上的进程,并对...
2 如何使用FutureTask 、Future、Callable、线程池实现线程2.1 FutureTask + Callable实现多线程2.2 线程池+Future+Callable 实现多线程3 Runnable、Callable、Future和FutureTask之间的关系3.1 整体关系介绍3.2 ...
Callable,Future的使用方式,里面使用了三种使用方式分别是FutureTask,ExecutorService,ExecutorCompletionService
`Future`、`FutureTask`、`Callable`和`Runnable`是Java并发编程中的核心接口和类,它们在Android开发中同样有着广泛的应用。下面将详细介绍这些概念以及它们如何协同工作。 1. `Runnable`: 这是Java中最基础的多...
在实际应用中,Java 提供了 FutureTask 类作为 Future 接口的一个实现,可以直接用于 Thread 或 ExecutorService。此外,SwingWorker 是 Swing 库中的一个 Future 实现,特别适用于 GUI 应用程序中的后台计算。 ...
Future与FutureTask之间的关系 在Java中,Future和FutureTask都是用于获取线程执行的返回结果,但是它们之间存在一些差异和关联。本文将详细介绍Future和FutureTask的关系、使用和分析。 一、Future介绍 Future...
在Java多线程编程中,CyclicBarrier、Callable、Future和FutureTask是四个重要的组件,它们各自提供了不同的功能,帮助开发者更好地管理和协调并发任务。接下来,我们将深入探讨这些组件的特性和使用方法。 首先,...
3. `<T> Future<T> submit(Callable<T> task)`:直接将`Callable`包装为`FutureTask<T>`并执行。 `FutureTask`的实现包括了任务状态的管理、中断处理和异常传播等复杂逻辑,确保了异步任务的正确执行和结果获取。...
Thread类不直接与Callable接口打交道,而是通过FutureTask来实现对Callable的调用。FutureTask实现了Runnable接口,使得它可以被Thread执行。在FutureTask的构造函数中,传入Callable对象,当FutureTask的run()方法...
它的实现类是FutureTask,在讲解FutureTask之前,我们先看看Callable, Future,FutureTask它们之间的关系图: Callable、Future、FutureTask之间的关系 RunnableFuture是一个接口,它继承了Runnable和Future这两个...
Callable接口与Runnable接口类似,但它具有一个泛型方法`call()`,该方法在执行时会返回一个结果,并可能抛出异常。Callable接口的定义如下: ```java public interface Callable<V> { V call() throws Exception;...
FutureTask<String> future = new FutureTask(new Callable() { @Override public String call() { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } return "11111...
`FutureTask`作为`Runnable`和`Callable`的桥梁,允许我们将一个`Callable`任务提交给`Executor`执行,并在后续代码中通过`FutureTask`的API查询任务状态,获取结果或取消任务。下面将详细介绍`FutureTask`的主要...
与Runnable接口相比,Callable接口提供了更强大的功能,因为Runnable只能定义无返回值的任务,而Callable可以定义有返回值的任务。这篇教程将深入探讨如何在Java中使用Callable。 Callable接口位于`java.util....
FutureTask实现原理通过submit方法的返回值,为一个Future,实际上这个Future为FutureTask实例,通过此实例,调用get方法,可以阻塞当前线程,直到任务运行完毕,返回结果。整个调用链条如下所示:worker thread -> ...
在Java并发编程中,通常我们会使用`ExecutorService`来提交任务,而`Future`和`FutureTask`就是与这些任务交互的关键。 首先,`Future`是一个接口,它提供了一种机制来检查异步计算是否完成,以及在计算完成后获取...
FutureTask<Integer> futureTask = new FutureTask(new Callable() { @Override public Integer call() throws Exception { log.info("inside callable future task ..."); return 1; } }); ExecutorService...