您的位置:首页 > 编程语言 > Java开发

创建java线程方式之三实现Callable接口

2015-09-08 22:14 543 查看
package com;

import java.util.concurrent.Callable;

public class Race implements Callable<Integer> {
private String name;// 名称
private long time;// 延迟时间
private boolean flag = true;
private int step = 0;// 步

public Race() {
super();
}

public Race(String name, long time) {
super();
this.name = name;
this.time = time;
}

public Integer call() throws Exception {
while (flag) {
Thread.sleep(time);
step++;
}
return step;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public long getTime() {
return time;
}

public void setTime(long time) {
this.time = time;
}

public boolean isFlag() {
return flag;
}

public void setFlag(boolean flag) {
this.flag = flag;
}

public int getStep() {
return step;
}

public void setStep(int step) {
this.step = step;
}
}

package com;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

/**

 * 

 * 使用Callable接口创建线程

 * 

 * @author 华伟科技

 * 

 */

public class Call {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 创建线程
ExecutorService ser = Executors.newFixedThreadPool(2);
Race tortoise = new Race("老乌龟", 1000);
Race rabbit = new Race("小兔子", 500);
// 获取值
Future<Integer> tortoiseResult = ser.submit(tortoise);
Future<Integer> rabbitResult = ser.submit(rabbit);

Thread.sleep(2000);// 2秒后停止线程
tortoise.setFlag(false);// 停止线程体循环
rabbit.setFlag(false);

Integer tortoiseNum = tortoiseResult.get();
Integer rabbitNum = rabbitResult.get();

System.out.println("乌龟跑了" + tortoiseNum + "步");
System.out.println("小兔子跑了" + rabbitNum + "步");
// 停止线程服务
ser.shutdownNow();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程