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多线程编程详解(看这篇就足够了)