多线程第一步,启动线程
从源码层面来讲,JAVA启动线程的方式只有一种,那就是创建一个Thread对象,然后调用start()方法。
继承Thread启动线程
public void runThread() {
Thread t1 = new T1();
t1.start();
}
class T1 extends Thread {
@Override
public void run() {
System.out.println("thread");
}
}
实现Runnable启动线程
public void runThreadByRunnable() {
Thread t2 = new Thread(new T2());
t2.start();
}
class T2 implements Runnable {
@Override
public void run() {
System.out.println("runnable");
}
}
通过线程池启动线程
public void runThreadByThreadPool() {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(() -> {
System.out.println("Hello Java");
});
executorService.shutdown();
}
实现Callable启动线程
public void runThreadByCallable() throws ExecutionException, InterruptedException {
ExecutorService executorService = Executors.newCachedThreadPool();
Callable<Integer> callable = new T3();
FutureTask<Integer> futureTask = new FutureTask<>(callable);
executorService.execute(futureTask);
//阻塞方法
Integer integer = futureTask.get();
System.out.println(integer);
executorService.shutdown();
}
class T3 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
System.out.println("callable");
Thread.sleep(1000L);
return 100;
}
}