创建线程的三种方法
来源:互联网 发布:网络娱乐性比实用性强 编辑:程序博客网 时间:2024/05/21 08:53
第一种 继承Thread类
class Test1 extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
}
}
第二种 实现Runnable接口
class Test1 implements Runnable{
@Override
public void run() {
}
}
第三种 实现Callable接口 有返回值
class Car implements Callable<T>{
@Override
public Integer call() throws Exception {
return null;
}
}
测试实例
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableTest {
public static void main(String[] args) throws InterruptedException, ExecutionException {
//创建2个线程
ExecutorService pool = Executors.newFixedThreadPool(2);
String name = "千年王八";
String name2 = "嫦娥的兔子";
Car car = new Car(name,500);
Car car2 = new Car(name2,1000);
Future<Integer> submit = pool.submit(car);
Future<Integer> submit2 = pool.submit(car2);
Thread.sleep(5000);
//跳出Car类的whIle循环方法
car.setFlag(false);
car2.setFlag(false);
Integer wangba = submit.get();
Integer tuzi = submit2.get();
System.out.println(name+"跑了"+wangba+"步");
System.out.println(name2+"跑了"+tuzi+"步");
pool.shutdown();
}
}
class Car implements Callable<Integer>{
public Car(String name) {
super();
this.name = name;
}
public Car(String name,int time) {
super();
this.name = name;
this.time = time;
}
private String name; //名称
private long time = 0; //时间
private boolean flag = true; //用于停止
private int step = 0; //步
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;
}
@Override
public Integer call() throws Exception {
// TODO Auto-generated method stub
while(flag){
//休眠多少秒
Thread.sleep(time);
step++;
}
return step;
}
public int getStep() {
return step;
}
public void setStep(int step) {
this.step = step;
}
}
- 创建线程的三种方法
- 线程创建的三种方法
- JAVA创建线程的三种方法
- 线程的三种创建方法
- 创建线程的三种方法
- java创建线程的三种方法
- 创建线程的三种方法
- 创建线程的三种方法
- 创建线程的三种方法
- 多线程编程——创建线程的三种方法
- Java创建线程的三种方法比较及用法
- 线程间操作无效: 从不是创建控件的线程访问它的三种方法
- 线程间操作无效:从不是创建控件的线程访问它的三种方法
- 多线程创建 方法一: NSThread 创建线程的三种方式
- java创建线程的三种方式
- iOS创建线程的三种方式
- iOS创建线程的三种方式
- 创建线程的三种方式浅析
- js JSON
- c++实现单链表逆序
- Linux管理其他用户的历史命令记录的方案
- zstuoj 4242 校庆 4244 众数
- cmake编译win下64位obs
- 创建线程的三种方法
- 远程时终端ls时颜色修改
- CRect
- printWriter 缓存字符输出流
- 好好说一说室内定位技术
- 第十二周实践"打豆豆”的报告
- 用java解决浏览器的缓存问题
- 第十二周 输出交换后的值
- Boost log 简单使用