Bellow是实现Runnable类的代码
public class ExecutorServiceWithRunnable {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(10);
Future<emp> submit =null;
emp emp = new emp();
for(int i=0;i<5;i++) {
submit = (Future<emp>) pool.submit(new RunnableClass(emp));
try {
System.out.println(submit.get().getId());
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class RunnableClass implements Runnable{
emp e=null;
public RunnableClass(emp emp) {
// TODO Auto-generated constructor stub
this.e=emp;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+"...."+e.getId());
e.setId(e.getId()+1);
}
}
class emp{
int id;
String status;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
得到的输出是:pool-1-thread-1…..0线程“main”java.lang.NullPointerException中的ExecutorServiceWithRunnableCallable.main(ExecutorSServiceWithRunnable.java:15)
以下是Callable的代码
public class ExecutorServiceWithRunnableCallable2 {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(10);
Future<emp> submit =null;
emp emp = new emp();
for(int i=0;i<5;i++) {
submit = pool.submit(new CallableClass(emp));
try {
System.out.println(submit.get().getId());
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class CallableClass implements Callable<emp>{
emp e=null;
public CallableClass(emp emp) {
// TODO Auto-generated constructor stub
this.e=emp;
}
@Override
public emp call() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+"...."+e.getId());
e.setId(e.getId()+1);
return e;
}
}
**获得的输出为:**池-1-线程-1….0 1池-1-线程-2….1 2池-1-线程-3….2 3池-1-线程-4….3 4池-1-线程-5….4 5
所以在两种情况下,请澄清提交方法返回的未来对象。
< code>Runnable不返回结果。所以< code>Future::get仍然会阻塞,直到runnable完成,但随后只返回< code>null。
submit = (Future<emp>) pool.submit(new RunnableClass(emp));
此类强制转换将产生警告,因为您实际上并没有得到Future
正如Javadoc所说,你真的得到了一个
未来
submit = pool.submit(new CallableClass(emp));
如果你想要一个结果,提交一个可调用的。请注意,没有必要进行类强制转换,它可以从可调用的类型中推断出未来的泛型类型。
问题内容: SharedPreferences用于在Android中保存应用程序数据。 和两者都用来保存在共享偏好的变化。 如Android库中所述: 与commit()将其首选项同步写到持久性存储中的方式不同,apply()立即将其更改提交到内存中的SharedPreferences,但是启动对磁盘的异步提交,并且不会收到任何故障通知。如果此SharedPreferences上的另一个编辑器在a
我试图从数据库中选择数据,更新每个对象,然后在项目管理器中更新数据库。 我试图在每次更新后刷新DAO,但没有任何改变。 该配置非常基本,有一个读写器,提交间隔为100。 读者正在按预期工作: 作者也很基本: 问题是,前100条记录已经提交,但其余的记录没有提交。Spring批处理表显示,它读取所有记录并多次提交,但当我签入数据库时,它只提交一次。 Spring batch的版本是2.2.6。 使现
我第一次认真使用MVC在umbraco建立了一个解决方案。我已经成功地使用BeginUmbracoForm呈现了一个表单,并提交了数据,效果非常好。 我的问题是,我想实现一个重置按钮,但由于我的数据处于会话中,我必须重置服务器端。 查看: 控制器: 单击后,我会被重定向到/umbraco/Surface/SearchCriteriaSurface/Reset,这是一个找不到的资源。 你知道我在按下
我将可调用任务(使用submit())提交给ExecutionService的实现。有时我似乎遇到了死锁,但无法工作在哪里或为什么会发生,所以我想为任务设置一个超时,我不清楚是如何做到的? 我应该吗 在提交任务时,在ExecutionService上使用invokeAny()而不是submit()并设置超时。我使用submit()一次提交许多任务,我是否也可以这样使用invokeAny(),我很谨
Commit(提交)就是把修改保存到仓库里。 用法 git commit 选项 -a(--all),把所有修改与删除自动添加到暂存区然后提交。不包含未跟踪文件。 -m(--message),设置提交信息。 练习 1,打开 resources.md ,添加一行文字: # 相关资源 保存文件,再去修改一下: git commit -am '设置相关资源文档标题' 这次用了 -a 选项,它会自动把
说明 支付宝报关接口 官方文档:https://docs.open.alipay.com/155/104778/ 类 请求参数类 请求参数 类名:\Yurun\PaySDK\AlipayCrossBorder\Customs\Submit\Request 属性 名称 类型 说明 $service string 接口名称 $out_request_no string 商户生成的用于唯一标识一次报关操