多线程的创建方式
(1)继承Thread类:这种方式一般不常用,考虑到新建的线程类有继承其他父类的需要;
class MyThread extends Thread{
@Override public void run(){ //do something here } }
(2)实现Runnable接口:最常用的方式
class MyThread implements Runnable{ @Override public void run(){ //do something here } }
(3)实现Callable接口:这种方式用在需要返回结果值的场景下,实现Collable接口需要实现其call()方法
public class MyThread implements Callable<String>{
@Override
public String call() throws Exception{
//do something here
return XXX;
}
}
public class FutureMain{
public static void main(String[] args){
//构造FutureTask
FutureTask<String> future = new FutureTask<String>(new MyThread());
Thread t1 = new Thread(future);
t1.start();
//取得call()方法的返回值
System.out.println("返回值"+future.get());
}
}
当然,除了基本的功能外,JDK还为Future提供了一些简单的控制功能:
boolean cancle(boolean mayInterruptIfRunning); //取消任务 boolean isCancelled(); //是否已经取消 boolean isDone(); //是否已完成