线程的创建
public class Test {
public static void main(String[] args) throws ExecutionException, InterruptedException {
new Thread1().start();
new Thread(new Thread2()).start();
new Thread(new FutureTask<String>(new Thread3())).start();
FutureTask<String> futureTask = new FutureTask<String>(new Thread3());
Thread thread = new Thread(futureTask);
thread.start();
//通过get()方法获取返回值
System.out.println(futureTask.get());
}
}
class Thread1 extends Thread {
@Override
public void run() {
System.out.println("第一种 extends Thread 方式创建线程");
}
}
class Thread2 implements Runnable {
@Override
public void run() {
System.out.println("第二种 implements Runnable 方式创建线程");
}
}
class Thread3 implements Callable<String> {
//call()中返回类型为Callable<String>中类型确定
@Override
public String call() throws Exception {
System.out.println("第三种 implements Callable 创建线程");
return "String";
}
}
第三种方式说明:


FutureTask是Runnable的实现类,同时包含了上图的构造方法 另外使用Callable来进行多线程编程,可以有返回值,且可以抛出异常
浙公网安备 33010602011771号