当前位置:实例文章 » 其他实例» [文章]【并发编程的艺术读书笔记】创建线程的四种方式

【并发编程的艺术读书笔记】创建线程的四种方式

发布人:shili8 发布时间:2024-11-19 03:54 阅读次数:0

**并发编程的艺术读书笔记**

**创建线程的四种方式**

在并发编程中,创建线程是非常重要的一步。有多种方法可以创建线程,我们将分别介绍以下四种方式:

###1. 继承Thread类最简单的方式就是继承Thread类,然后重写run()方法。在这个方法中,你可以编写需要执行的代码。

javapublic class MyThread extends Thread {
 @Override public void run() {
 System.out.println("Hello, World!");
 }

 public static void main(String[] args) {
 MyThread thread = new MyThread();
 thread.start(); // 启动线程 }
}


###2. 实现Runnable接口继承Thread类虽然简单,但如果需要执行的代码比较复杂,可能会导致类变得臃肿。这种情况下,可以实现Runnable接口,然后将其传递给Thread对象。

javapublic class MyRunnable implements Runnable {
 @Override public void run() {
 System.out.println("Hello, World!");
 }

 public static void main(String[] args) {
 Thread thread = new Thread(new MyRunnable());
 thread.start(); // 启动线程 }
}


###3. 使用Callable接口如果需要从线程中返回值,可以使用Callable接口。这个接口比Runnable接口多了一个call()方法。

javapublic class MyCallable implements Callable {
 @Override public String call() throws Exception {
 System.out.println("Hello, World!");
 return "Hello, World!";
 }

 public static void main(String[] args) throws InterruptedException, ExecutionException {
 ExecutorService executor = Executors.newSingleThreadExecutor();
 Future future = executor.submit(new MyCallable());
 String result = future.get(); // 等待线程执行完成 System.out.println(result);
 executor.shutdown();
 }
}


###4. 使用线程池使用线程池可以更高效地管理线程。线程池会重用已经创建的线程,避免频繁创建和销毁线程。

javapublic class MyRunnable implements Runnable {
 @Override public void run() {
 System.out.println("Hello, World!");
 }

 public static void main(String[] args) throws InterruptedException {
 ExecutorService executor = Executors.newFixedThreadPool(5); // 创建一个固定大小的线程池 for (int i =0; i < 10; i++) {
 executor.submit(new MyRunnable()); // 提交任务到线程池 }
 executor.shutdown();
 }
}


**总结**

创建线程有多种方式,选择合适的方式取决于具体需求。继承Thread类和实现Runnable接口是最简单的方式,但如果需要返回值或高效地管理线程,可以使用Callable接口和线程池。

相关标签:并发
其他信息

其他资源

Top