看看javadocs,它只是说
<T> Future<T> submit(Runnable task, T result)提交Runnable任务以执行并返回表示该任务的Future.Future的get方法将在成功完成后返回给定的结果.
参数:
任务 - 要提交的任务
结果 - 返回的结果
但它对结果有什么影响?它存储了什么吗?它只是使用结果类型来指定类型Future<T>?
我正在使用 VBScript 来解析一些 Windows 安装程序中的返回码。我想确认我是否正确地执行了按位运算,所以我记下了一些Echo语句,发现其中一个没有产生我预期的结果:
WScript.Echo (&H01010101) ' prints 16843009 (0x01010101). Correct!
WScript.Echo (&H01010101 And &Hff000000) ' prints 16777216 (0x01000000). Correct!
WScript.Echo (&H01010101 And &H00ff0000) ' prints 65536 (0x00010000). Correct!
WScript.Echo (&H01010101 And &H0000ff00) ' prints 16843008 (0x01010100). What's happening here?
WScript.Echo (&H01010101 And &H000000ff) ' prints 1 (0x00000001). Correct!
Run Code Online (Sandbox Code Playgroud)
第四个似乎只屏蔽了底部的两个字节。好的,当然,我想我可以看到在它被Anded之前它可能被转换为可以容纳它的最小 int 的位置,因此掩码比被掩码的短或类似的东西,但是为什么最后的情况有效?
如果我在最高字节中放入一些东西,它会起作用:
WScript.Echo (&H01010101 And &Hf000ff00) ' prints 256 (0x01010100).
Run Code Online (Sandbox Code Playgroud)
还有一些其他情况:
WScript.Echo (&H01010101 And &H0000f0ff) ' prints 16842753 (0x01010001).
WScript.Echo (&H01010101 And &Hf00000ff) ' …Run Code Online (Sandbox Code Playgroud) 我有一个命令行应用程序.它运行循环说100次,并在循环中使用线程调度任务.我正在使用ExecutorService,因此任何时候都有4个线程在运行.
循环结束后,我想打印摘要消息.例如,完成所有100个任务所花费的时间.当我逐步完成代码时,调试器直接进入摘要部分,但其他任务仍在运行.我理解这是因为每个线程都是自己运行的.那么如何在所有线程完成后才打印消息?
ExecutorService exec = Executors.newFixedThreadPool(4);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
Runnable requestHandler = new Runnable() {
@Override
public void run() {
try {
// call task function in here
} catch (Exception ex) {
}
}
};
exec.execute(requestHandler);
}
exec.shutdown();
long endTime = System.currentTimeMillis();
LOGGER.info("******************SUMMARY******************");
LOGGER.info("Time taken : " + ((endTime - startTime)/1000) + " seconds, "
+ ((endTime - startTime)/1000/60) + " minutes");
Run Code Online (Sandbox Code Playgroud)