java.util.concurrent中的Callable接口和Future接口

参考博客:

--java.util.concurrent 之六:使用Future类和Callable类
http://kanglecjr.iteye.com/blog/1071199

--Java.util.concurrent 包 使用Future,Callable实现抢答模式
http://blog.csdn.net/u013025830/article/details/51373482

-- Java多线程之~~~Callable接口获得返回值
http://blog.csdn.net/a352193394/article/details/39505307

--Java多线程之Callable接口的实现
http://www.cnblogs.com/baizhanshi/p/6425209.html

--Callable,Runnable比较及用法
http://www.cnblogs.com/zeze/p/6293104.html

import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import org.apache.log4j.Logger;

public class TaskDemo implements Callable<Boolean> {

/**
 * CountDownLatch类只提供了一个构造器:
 * 		public CountDownLatch(int count) {  };  //参数count为计数值
 * 然后下面这3个方法是CountDownLatch类中最重要的方法:
		public void await() throws InterruptedException { };   //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行
		public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行
		public void countDown() { };  //将count值减1
 * @param args
 */
    private static final Logger LOGGER = Logger.getLogger(TaskDemo.class);
    private XTargetService xTargetService;
    private CountDownLatch countDownLatch;

    public TaskDemo() {
        super();
    }

    public TaskDemo(XTargetService xTargetService,CurrentContext context, CountDownLatch countDownLatch) {
        super();
        this.xTargetService = xTargetService;
        this.context = context;
        this.countDownLatch = countDownLatch;
    }

    @Override
    public Boolean call() throws Exception {
        try {
			Thread.sleep(3000);
        } catch (Exception e) {
            LOGGER.error("xxxxxx", e);
        }finally{
            if (countDownLatch != null) {
                countDownLatch.countDown();
            }
        }
        return true;
    }

}

猜你喜欢

转载自franciswmf.iteye.com/blog/2392808
今日推荐