Java多线程经常会使用创建线程,下面我就重点详解4种常见的创建线程的方式。
1.继承Thread类创建线程
可以通过继承Thread类,并重写run()方法来创建线程的主要执行逻辑。
如下所示:
public class MyThread extends Thread { public void run() { // 线程执行的逻辑 } } // 创建线程对象并启动 MyThread thread = new MyThread(); thread.start();
然后,可以创建Thread对象并调用start()方法来启动线程。
2.实现Runnable接口创建线程
另一种创建线程的方法是实现Runnable接口,并在该类中实现run()方法。
如下所示:
public class MyRunnable implements Runnable { public void run() { // 线程执行的逻辑 } } // 创建线程对象并启动 MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start();
创建Thread对象,并将该Runnable对象传递给Thread构造函数,最后,调用start()方法来启动线程。
3.使用线程池创建线程
线程池是一组可重复使用的线程,可以减少线程创建和销毁的开销,可以使用Executor框架中的线程池来管理线程。
如下所示:
ExecutorService executor = Executors.newFixedThreadPool(10); Runnable task = new Runnable() { public void run() { // 线程执行的逻辑 } }; executor.submit(task);
可以使用ThreadPoolExecutor类来创建线程池,并将Runnable或Callable对象提交给线程池来执行。
4.使用Lambda表达式创建线程
JDK1.8版本之后,还可以使用Java Lambda表达式,来简化创建线程。
如下所示:
// 继承Thread类 new Thread(() -> { // 线程执行的逻辑 }).start(); // 实现Runnable接口 Runnable task = () -> { // 线程执行的逻辑 }; new Thread(task).start(); // 使用线程池 ExecutorService executor = Executors.newFixedThreadPool(10); executor.execute(() -> { // 线程执行的逻辑 });
以上就是4种常见的创建线程的方式详解,更多Java多线程,请查看:Java多线程编程详解(看这篇就足够了)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》