当前位置: 首页> 游戏> 手游 > 浙江绍兴疫情最新消息_网购最便宜的软件_高效统筹疫情防控和经济社会发展_图片外链工具

浙江绍兴疫情最新消息_网购最便宜的软件_高效统筹疫情防控和经济社会发展_图片外链工具

时间:2025/7/10 14:07:22来源:https://blog.csdn.net/m0_62909831/article/details/145651073 浏览次数:0次
浙江绍兴疫情最新消息_网购最便宜的软件_高效统筹疫情防控和经济社会发展_图片外链工具

文章目录

  • 1. 继承Thread类
  • 2. 实现Runnable接口
  • 3. 匿名内部类
  • 4. lambda表达式
  • 5. 实现Callable接口
  • 6. 使用线程池(ExecutorService)

1. 继承Thread类

示例:

public class myThread extends Thread {public static void main(String[] args) {myThread thread = new myThread();thread.start();}@Overridepublic void run() {System.out.println("这是通过继承Thread类创建的线程:"+Thread.currentThread().getName());}
}

输出:
在这里插入图片描述

重写的是run()方法,而不是start()方法,但是占用了继承的名额,java中的类是单继承的。
底层也是实现Runable接口,如下图:

在这里插入图片描述

2. 实现Runnable接口

public class myRunnable implements Runnable {public static void main(String[] args) {Thread thread = new Thread(new myRunnable());thread.start();}public void run() {System.out.println("这是通过实现Runnable接口创建的线程:"+Thread.currentThread().getName());}
}

总结:实现Runnable接口,实现run()方法,使用依然要用到Thread,这种方式更常用

有时候,我们会直接使用匿名内部类的方式或者Lambda表达式的方式:

3. 匿名内部类

示例:

public class myThread{public static void main(String[] args) {Thread thread = new Thread(new Runnable() {public void run() {System.out.println("这是通过使用匿名内部类创建的线程:"+Thread.currentThread().getName());}});thread.start();}
}

输出:
在这里插入图片描述

4. lambda表达式

public class myThread{public static void main(String[] args) {Thread thread = new Thread(() -> System.out.println("这是通过使用lambda表达式创建的线程:"+Thread.currentThread().getName()));thread.start();}
}

输出:
在这里插入图片描述

5. 实现Callable接口

结合FutureTask

class MyCallable implements Callable<Integer> {public Integer call() {System.out.println("Thread is running: " + Thread.currentThread().getName());return 42; // 返回值
}public static void main(String[] args) throws ExecutionException, InterruptedException {MyCallable callable = new MyCallable();FutureTask<Integer> futureTask = new FutureTask<>(callable);new Thread(futureTask).start(); // 启动线程Integer result = futureTask.get(); // 获取返回值System.out.println("Result: " + result);}
}

输出:
在这里插入图片描述

FutureTask 本质上还是继承了Runnable接口

在这里插入图片描述

Java中,类和类是单继承的,接口之间是多继承的

6. 使用线程池(ExecutorService)

线程池是一种更高效、更灵活的线程管理方式,可以复用线程,避免频繁创建和销毁线程的开销。

public class MyThread implements Runnable {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(3);executorService.execute(new MyThread());}@Overridepublic void run() {System.out.println("hello guys!");}
}

输出:
在这里插入图片描述

实现Callable接口或者Runnable接口都可以,由ExecutorService来创建线程。

以上几种方式,底层都是基于Runnable。
在这里插入图片描述

关键字:浙江绍兴疫情最新消息_网购最便宜的软件_高效统筹疫情防控和经济社会发展_图片外链工具

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: