Java提供了三种方式创建线程,下面为代码示例:
public class NewThread {
/*扩展自Thread类*/
private static class ConcurrentThread extends Thread{
@Override
public void run() {
System.out.println("I am extends Thread");
}
}
//java是单继承多实现的,所以在存在继承Thread的前提下又提供了runnable接口,程序设计更加灵活
/*实现Runnable接口*/
private static class ConcurrentRunnable implements Runnable{
@Override
public void run() {
System.out.println("I am implements Runnable");
}
}
/*实现Callable接口,允许有返回值*/
private static class ConcurrentCall implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("I am implements Callable");
return "CallResult";
}
}
public static void main(String[] args)
throws InterruptedException, ExecutionException {
//实现Runnable
ConcurrentRunnable runnable = new ConcurrentRunnable();
new Thread(runnable).start();
//实现callable
ConcurrentCall call = new ConcurrentCall();
FutureTask<String> futureTask = new FutureTask<>(call);
new Thread(futureTask).start();
//futureTask.get()为阻塞方法,会阻塞mian线程直至get方法运行完成
System.out.println(futureTask.get());
}
/**结果:
*I am implements Runnable
*I am implements Callable
*CallResult
*/
}