import java.util.concurrent.*;
public class StartThread {
public static void main(String[] args) throws ExecutionException, InterruptedException {
/**
* Thread创建的Thread启动
*/
new _CreateThreadMethod.ThreadCreateThread().start();
/**
* 实现的runnable接口的启动
*/
new Thread(new _CreateThreadMethod.ImRunnable2CreateThread(), "thread 01").start();
/**
* 实现的Callable接口的启动
*/
new Thread(
new FutureTask<Integer>(new _CreateThreadMethod.CallableThread2CreateThread()),
"Callable 创建的要放在FutureTask中").start();
System.out.println("==========================================================================");
//分别创建10个线程
for (int i = 0; i < 10; i++) {
new _CreateThreadMethod.ThreadCreateThread().start();
}
//创建10个线程
for (int i = 0; i < 10; i++) {
new Thread(new _CreateThreadMethod.ImRunnable2CreateThread(), "thread " + i).start();
}
//创建10个线程
for (int i = 0; i < 10; i++) {
FutureTask<Integer> futureTask = new FutureTask<>(new _CreateThreadMethod.CallableThread2CreateThread());
Thread thread = new Thread(futureTask);
thread.start();
Integer integer = futureTask.get();
System.out.println(" ===============: " + integer);
}
/**
* 线程池的方式启动
*/
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
cachedThreadPool.execute(new _CreateThreadMethod.ImRunnable2CreateThread());
cachedThreadPool.shutdown();
fixedThreadPool.execute(new _CreateThreadMethod.ImRunnable2CreateThread());
fixedThreadPool.shutdown();
scheduledExecutorService.execute(new _CreateThreadMethod.ImRunnable2CreateThread());
scheduledExecutorService.shutdown();
singleThreadExecutor.execute(new _CreateThreadMethod.ImRunnable2CreateThread());
singleThreadExecutor.shutdown();
/**
* 推荐创建线程池的方式
*
*/
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 15, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
threadPoolExecutor.execute(new _CreateThreadMethod.ImRunnable2CreateThread());
Future<Integer> future = threadPoolExecutor.submit(new _CreateThreadMethod.CallableThread2CreateThread());
Integer i = future.get();
System.out.println(" ===============: " + i);
}
}
Java 启动线程的方式
于 2023-11-30 13:51:34 首次发布