1、Java 多線程三種方式
1.繼承Thread
2.實現Runnable
3.實現Callable
2、繼承Thread
public class ThreadDemo extends Thread {
public void run() {
System.out.println("線程名稱:"+this.getName()+"-----線程Id:"+this.getId());
}
public static void main(String[] args) {
new ThreadDemo().start();
}
}
3、實現Runnable
public class RunnableDemo implements Runnable {
public void run() {
System.out.println("線程名稱:"+Thread.currentThread().getName()+"-----線程Id:"+Thread.currentThread().getId());
}
public static void main(String[] args) {
new Thread(new RunnableDemo()).start();
}
}
4、實現Callable
public class CallableDemo implements Callable<String> {
private String attribute;
public CallableDemo(String attribute) {
this.attribute = attribute;
}
@Override
public String call() throws Exception {
return attribute;
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService executor = Executors.newCachedThreadPool();
/**
* FutureTask
*/
FutureTask<String> futureTask = new FutureTask<>(new CallableDemo("FutureTask"));
executor.submit(futureTask);
/**
* Future
*/
Future<String> future = executor.submit(new CallableDemo("Future"));
System.out.println("FutureTask獲取執行結果:" + futureTask.get());
System.out.println("Future獲取執行結果:" + future.get());
}
}