public class ThreadTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 线程启动1
ExtendThread extendThread = new ExtendThread();
extendThread.setName("name:(i am 继承Thread)");
extendThread.start();
// 线程启动2
ImplRunnable implRunnable = new ImplRunnable();
new Thread(implRunnable, "小明线程[impl]").start();
new Thread(implRunnable, "小红线程[impl]").start();
// 实现callable接口
ImpCallable t1 = new ImpCallable();
ImpCallable t2 = new ImpCallable();
ImpCallable t3 = new ImpCallable();
// 创建线程执行服务 线程池
ExecutorService serv = Executors.newFixedThreadPool(3);
Future<Integer> r1 = serv.submit(t1);
Future<Integer> r2 = serv.submit(t2);
Future<Integer> r3 = serv.submit(t3);
// 拿结果
System.out.println(r1.get());
System.out.println(r2.get());
System.out.println(r3.get());
// 关闭服务
serv.shutdownNow();
}
static class ExtendThread extends Thread {
@Override
public void run() {
System.out.println(this +" "+ getName());
}
}
static class ImplRunnable implements Runnable {
@Override
public void run() {
System.out.println(this+" "+Thread.currentThread().getName());
}
}
static class ImpCallable implements Callable<Integer>{
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
@Override
public Integer call() {
int a = 12;
int b = 11;
return a+b;
}
}
}
Java 的 线程的3种启动方式
最新推荐文章于 2024-03-10 08:49:36 发布