- 浏览: 146146 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
看了 线程持的源码和Futuretask的源码终于明白了
FutureTask 里面哟个内部类:Sync 这个内部类中包含了
private volatile Thread runner; 这样的一个定义
和 private V result; 的定义 我就明白了
在使用callable的时候最后还是会使用runnable这个接口
void innerRun() {
if (!compareAndSetState(READY, RUNNING))
return;
runner = Thread.currentThread();//获取当前线程
if (getState() == RUNNING) { // recheck after setting thread
V result;
try {
result = callable.call();
} catch (Throwable ex) {
setException(ex);
return;
}
set(result);// 将得到的值赋值给 private V result; 这个变量
} else {
releaseShared(0); // cancel
}
}
在看看线程池的原理:
/**
* @throws RejectedExecutionException {@inheritDoc}
* @throws NullPointerException {@inheritDoc}
*/
public <T> Future<T> submit(Callable<T> task) {
if (task == null) throw new NullPointerException();
RunnableFuture<T> ftask = newTaskFor(task);
execute(ftask);
return ftask;
}
在 submit 中会实现一个RunnableFuture, 而Futuretask实现了RunnableFuture的接口!
FutureTask 里面哟个内部类:Sync 这个内部类中包含了
private volatile Thread runner; 这样的一个定义
和 private V result; 的定义 我就明白了
在使用callable的时候最后还是会使用runnable这个接口
void innerRun() {
if (!compareAndSetState(READY, RUNNING))
return;
runner = Thread.currentThread();//获取当前线程
if (getState() == RUNNING) { // recheck after setting thread
V result;
try {
result = callable.call();
} catch (Throwable ex) {
setException(ex);
return;
}
set(result);// 将得到的值赋值给 private V result; 这个变量
} else {
releaseShared(0); // cancel
}
}
在看看线程池的原理:
/**
* @throws RejectedExecutionException {@inheritDoc}
* @throws NullPointerException {@inheritDoc}
*/
public <T> Future<T> submit(Callable<T> task) {
if (task == null) throw new NullPointerException();
RunnableFuture<T> ftask = newTaskFor(task);
execute(ftask);
return ftask;
}
在 submit 中会实现一个RunnableFuture, 而Futuretask实现了RunnableFuture的接口!
发表评论
-
java 栈内存解惑
2013-10-23 23:41 638int j = 0; j = j++; ... -
Google Guava Collections 使用介绍
2013-07-16 18:10 651Google Guava Collections 使用介绍 J ... -
Google Collections(Guava)中强大的Concurrent MapMaker
2013-07-16 18:07 1298仔细研究了刚发布1.0版本的Google Collection ... -
java wait 研究
2013-06-28 17:07 735[color=red]java wait 的使用必须放在实例对 ... -
java钩子函数的使用已经kill
2013-06-27 22:31 1512package com.aircoder.test; imp ... -
java获取所有的线程信息
2013-06-24 20:02 1564public class T2 { public sta ... -
java 获取mysql datetime 时间注意
2013-05-16 14:43 1475class SPubinfo implements RowMa ... -
java wait的解锁理解********
2013-04-18 10:49 886很多书都说wait会释放线程加的锁,其实经过试验不是这样的, ... -
jvm 关闭处理注册方法
2013-04-08 16:11 726import java.lang.*; public cla ... -
wget ftp 下载文件java代码
2013-04-05 15:16 1089private boolean wget(String fil ... -
xPath 解析xml
2013-04-05 15:14 701使用xPath 根据路径解析文件. xpath 具有多个版本。 ... -
ubuntu eclipse 问题
2013-04-05 03:30 735Eclipse 3.6 在 Ubuntu 10.04 下会出现 ... -
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
2013-03-27 16:47 2477LockSupport.park(); 停止 Sy ... -
ehchahe 例子
2013-01-23 15:40 942package test; import net.sf.eh ... -
java 类加载
2012-12-24 15:21 7041: 访问一个类的静态方法的时候。不会引起一个类的初始化,即类 ... -
java 获取图片高和宽
2012-12-13 17:01 1327public static Map<String,Int ... -
java建立socket,返回浏览器的请求
2012-12-01 01:58 958package com.jdk.api.test; impo ... -
schedulePool.scheduleAtFixedRate 是个误解
2012-11-22 20:34 1175我们经常使用的java定时器单线程执行,例如: 一个任务每个 ... -
ExecutorCompletionService
2012-11-19 22:36 664package com.jdk.api; import ja ...
相关推荐
JAVA中Callable的使用。下载后评论可返分
java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future java并发包之Callable和Future
主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
callable用法
在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示的是从方法call()中返回的值,并且必须使用ExecutorService.submit()方法调用它。 import java.util.ArrayList; import java.util....
主要介绍了Java Callable接口实现细节详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
自留demo,主要是Thread-Callable-Future的基本实现。 参考文章: 1、深入理解Callable ...2、彻底理解Java的Future模式: https://www.cnblogs.com/cz123/p/7693064.html
主要介绍了基于Java Callable接口实现线程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了详解Java Callable接口实现多线程的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
课程内容: 1- Java 多线程:启动线程 2- Java 多线程:Volatile – 基本线程通信 ...13- Java 多线程:Callable 和 Future 14- Java 多线程:中断线程 15- Java 多线程:Swing 中的多线程与 SwingWorker
CallableCallable与Future在Web应用中的优化案例
主要介绍了java Callable与Future的详解及实例的相关资料,需要的朋友可以参考下
主要介绍了Java中的Runnable,Callable,Future,FutureTask的比较的相关资料,需要的朋友可以参考下
主要介绍了浅谈在Java中使用Callable、Future进行并行编程,具有一定借鉴价值,需要的朋友可以参考下。
本文给大家分享的是使用Java多线程来实现callable接口的方法,以及使用方法,另外还有一个网友的实例,希望能够对大家掌握Java多线程有所帮助。
Callable接口的基本用法 2.1 创建Callable任务 2.2 提交Callable任务 2.3 获取任务执行结果 Future接口的使用 3.1 获取任务执行状态 3.2 取消任务的执行 Callable与Runnable的对比 Callable的异常处理 Callable的...
主要介绍了Django 错误:TypeError at / 'bool' object is not callable解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了java通过Callable和Future来接收线程池的执行结果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Java 线程(Thread,Runnable,Callable)实例详解的相关资料,这里对java 线程的三种方法进行了对比,需要的朋友可以参考下
计算机后端-Java-Java核心基础-第20章 多线程 18. 创建多线程的方式三:实现Callable接