如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以保存与每个任务相关联的Future,然后不断地调用timeout为零的get,来检验Future是否完成。这样做固然可以,但却相当乏味。幸运的是,还有一个更好的方法:CompletionService
阅读全文
java ExecutorService 介绍及使用
ExecutorService继承自Executor,它的目的是为我们管理Thread对象,从而简化并发编程。Executor使我们无需显式地去管理线程的生命周期,是JDK 5之后启动任务的首选方式。 要终止 ExecutorService 里的线程你需要调用 ExecutorService 的 shutdown() 方法。ExecutorService 并不会立即关闭,但它将不再接受新的任务,而且一旦所有线程都完成了当前任务的时候,ExecutorService 将会关闭。在 shutdown() 被调用之前所有提交给 ExecutorService 的任务都被执行。如果你想要立即关闭 ExecutorService,你可以调用 shutdownNow()方法。这样会立即尝试停止所有执行中的任务,并忽略掉那些已提交但尚未开始处理的任务。无法担保执行任务的正确执行。可能它们被停止了,也可能已经执行结束。
阅读全文
java FutureTask 介绍及使用
FutureTask实现了两个接口,Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。那么这个组合的使用有什么好处呢?假设有一个很耗时的返回值需要计算,并且这个返回值不是立刻需要的话,那么就可以使用这个组合。用另一个线程去计算返回值,而当前线程在使用这个返回值之前可以做其它的操作,等到需要这个返回值时,再通过Future得到,岂不美哉
阅读全文
java.util.concurrent.CountDownLatch
java.util.concurrent.CountDownLatch 是一个闭锁实现,它允许一个或多个线程等待一系列指定操作的完成。CountDownLatch 以一个给定的数量初始化。countDown() 每被调用一次,这一数量就减一。通过调用 await()方法之一,线程可以阻塞等待这一数量到达零。 以下是一个简单示例。Decrementer 三次调用 countDown() 之后,等待中的 Waiter 才会从 await() 调用中释放出来
阅读全文
java 的 Thread.sleep() 方法
sleep()可以使任务暂停执行一段时间,这个时间过后任务重新回到可执行状态。下面代码测试Thread.sleep()方法暂停的是当前线程还是所有线程,结果证明暂停的是当前线程
阅读全文
java可变参数
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理
阅读全文
运行java的class文件方法详解
运行class文件执行带main方法的class文件,命令行为:java <CLASS文件名>
阅读全文
师说
古之学者必有师。师者,所以传道受业解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。生乎吾前,其闻道也固先乎吾,吾从而师 之;生乎吾后,其闻道也亦先乎吾,吾从而师之。吾师道也,夫庸知其年之先后生于吾乎?是故无贵无贱,无长无少,道之所存,师之所存也
阅读全文
eclipse 常用快捷键
使用 eclispe 快捷键可以提高编码效率,所以记住一些常用的快捷键是有必要的。ctrl+shift+L 可以查看 eclipse 的所有快捷键,下面列出一些常用的
阅读全文
Java 中如何实现国际化
国际化(internationalization i18n)和本地化(localization l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化。针对计算机来说就是让一个既可以在中文环境下运行也可以在英语,甚至是日语的环境下运行
阅读全文