(转载; http://blog.csdn.net/chenleixing/article/details/44044243 )
Java并发编程的4种风格:Threads,Executors,ForkJoin和Actors;这里为了完成下面的任务,用四种方式来实现。
任务:
实现一个方法,它接收一条消息和一组字符串作为参数,这些字符串与某个搜索引擎的查询页面对应。对每个字符串,这个方法发出一个http请求来查询消息,并返回第一条可用的结果,越快越好。
方法一: Threads
AtomicReference:
提供了引用变量的读写原子性操作(也可以保证可见性) ;
线程的接口相当简明,你只需要提供一个Runnable,调用.start()开始计算。没有现成的API来结束线程,你需要自己来实现,通过类似boolean类型的标记来通讯
package com.ibm.multithread; import java.util.List; import java.util.concurrent.atomic.AtomicReference; public class PureThread { static String getFirstResult(String question, List<String> engines) { AtomicReference<String> result = new AtomicReference<>(); for (String base : engines) { String url = base + question; new Thread(() -> { result.compareAndSet(null, "999999999999"); }).start(); } while (result.get() == null); return result.get(); } }