订阅 TheTutorials/Java 学习更多 Java 相关的知识
Java 多线程
Java 本身提供了对多线程的支持,多线程允许并发的执行程序的多个部分,最大成程度的利用 CPU,一个进程是由多个线程所组成,因此线程可以看作轻量级进程。
Java 实现多线程
-
继承
Threadpublic static void main(String[] args) { /* 创建线程 */ MyThread firstThread = new MyThread("firstThread"); MyThread secondThread = new MyThread("secondThread"); /* 启动线程,当线程获取CPU时间片的时候就会开始运行 */ firstThread.start(); secondThread.start(); } static class MyThread extends Thread { MyThread(String name) { super(name); } MyThread() { super(); } @Override public void run() { super.run(); System.out.format("线程%s正在运行,线程id:%d\n", Thread.currentThread().getName(), Thread.currentThread().getId()); } }输出
线程secondThread正在运行,线程id:22 线程firstThread正在运行,线程id:21 -
实现
Runnable接口 (推荐)public static void main(String[] args) { Thread firstThread = new Thread(new MyThread(), "firstThread"); Thread secondThread = new Thread(new MyThread(), "secondThread"); firstThread.start(); secondThread.start(); } static class MyThread implements Runnable { @Override public void run() { System.out.format("线程%s正在运行,线程id:%d\n", Thread.currentThread().getName(), Thread.currentThread().getId()); } }输出
线程secondThread正在运行,线程id:22 线程firstThread正在运行,线程id:21 -
匿名
Runnable类 (Java 8 之前的版本)new Thread(new Runnable() { @Override public void run() { new Thread(()-> System.out.format("线程%s正在运行,线程id:%d\n", Thread.currentThread().getName(), Thread.currentThread().getId())).start(); } }).start(); -
Java 8
lambda语法格式实现多线程public static void main(String[] args) { Thread firstThread = new Thread(()-> System.out.format("线程%s正在运行,线程id:%d\n", Thread.currentThread().getName(), Thread.currentThread().getId())); firstThread.start(); new Thread(()-> System.out.format("线程%s正在运行,线程id:%d\n", Thread.currentThread().getName(), Thread.currentThread().getId())).start(); }
使用 Thread 还是 Runnable
-
如果我们的类继承了
Thread,那么将无法继承其他的类,因为 Java 不支持多继承,而当我们实现Runnable接口还能继续继承其他的类 -
如果继承
Thread类我们可以实现基本的功能,因为Thread提供类一些内置函数如yield(),interrupt等,这些是实现Runnable接口没有的功能
References
- https://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread-in-java
本文详细介绍了Java中实现多线程的几种方式,包括继承Thread类、实现Runnable接口以及Java 8的新语法。文章指出,虽然继承Thread类可以直接使用内置函数,但限制了进一步的类继承;而实现Runnable接口则更灵活,可以与其他类继承。
10万+

被折叠的 条评论
为什么被折叠?



