(转载; 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();

    }
}
View Code

相关文章: