随笔分类 - 多线程
摘要:这里涉及到Java的多线程并发知识,以及线程池相关的知识。就不在此说明了。具体说说CompletionService的应用场景和使用方法。 比如我们有10个线程需要丢到线程池里面去执行,然后把10个线程的执行结果返回回来处理。如果没有使用CompletionService,我们的实现方式如下。首先创
阅读全文
摘要:Java中有那么一些类,是以Atomic开头的。这一系列的类我们称之为原子操作类。以最简单的类AtomicInteger为例。它相当于一个int变量,我们执行Int的 i++ 的时候并不是一个原子操作。而使用AtomicInteger的incrementAndGet却能保证原子操作。具体的类如下:
阅读全文
摘要:要实现有返回值的多线程,具体代码如下: 1.FutureTask实现了接口Runnable,所以可以传入到线程中执行 2.futureTask.get()是一个阻塞方法 3.Callable<Integer>中的Integer表示返回的数据类型
阅读全文
摘要:fork-join我们可以理解为分而治之,就是说当一个任务非常大的时候,我们可以按照一定的业务需求拆分为若干个小的任务,最后把这些小的任务再聚合起来。 下面就通过fork-join实现一个从1加到100的多线程实现方式。 首先定义类SumTask,必须继承RecursiveTask<Integer>
阅读全文
摘要:关于集合安全: ArrayList线程不安全,Vector线程安全; HashMap线程不安全,HashTable线程安全; StringBuilder线程不安全,StringBuffer线程安全。 关于创建线程: 方法一:如上,匿名的线程 方法二:创建一个类MyThread继承Thread。使用如
阅读全文