JAVA入门之如何实现多线程程序开发

2025-10-09 05:42:11

1、什么是线程

线程是指程序的一条执行线索,单线程程序是指整个程序只有一条执行线索,该程序在一个特定时间点上,只能执行一个任务;多线程程序是指整个程序有两条或者两条以上执行线索,在一个特定时间点上,其能执行两件或者两件以上的任务(注意这个还需多核心计算机来配合)!

截图显示了同一种业务逻辑(包含四个任务),分别通过单线程和多线程来执行这段业务的流程图!从图上可以看出,多线程程序能充分发挥电脑多核心的优势!

JAVA入门之如何实现多线程程序开发

JAVA入门之如何实现多线程程序开发

2、认识 Runnable 接口

java.lang.Runnable 接口代表一个线程任务!我们启动的每一个线程都是针对一个具体任务,即这个线程去做什么!比如上个步骤截图中 "接受用户输入" 这个线程任务就可以通过 Runnable 接口来描述! 我们创建自己的任务,就是创建一个实现 Runnable 接口的类 : 

/**

 * 用于接受用户输入的任务

 */

public class ImportUserInputTask implements Runnable {

/**

* 我们实现 Runnable 就是要覆写其中的 run 方法

* 我们启动的线程执行的所有逻辑都在这个方法中定义

*/

@Override

public void run() {

    // Thread.currentThread() 返回的就是执行这个代码的那个线程实例

    System.out.println(Thread.currentThread().getName() + 

                        " 开始执行自己的业务逻辑了!");

    try {

        // Thread 类的静态方法 sleep, 代表让执行这个代码的那个线程实例暂停多少毫秒

        // 我们通过这种方式来体现一段耗时的业务操作

        Thread.sleep(1000); // 1000 ms

    } catch (InterruptedException e) {

        e.printStackTrace();

    }

    // 当执行完下面最后一段代码后,这个线程就结束了!

    System.out.println(Thread.currentThread().getName() + 

                       " 执行完毕自己的业务逻辑!");

    }

}

JAVA入门之如何实现多线程程序开发

3、认识 Thread 类

java.lang.Thread 这个类就是 JAVA 中的线程类!我们创建一个 Thread 对象,就代表我们创建了一条线程 : 

Thread firstThread = new Thread("第一个线程");

但目前这个线程只有一个名称,没有指定任何执行逻辑,我们刚刚认识了 Runnable 接口,Thread 类有这样一个构造函数 : 

Thread firstThread = new Thread(Runnable target, String name);

这个构造函数的第一个参数就是一个 Runnable 接口类型的对象,通过这个构造函数,我们就能为我们的线程指定其执行逻辑了 : 

/**

* 创建一个线程,其第一个参数指定这个线程要执行的代码逻辑!

* 第二个参数指定线程的名称,我们可以通过这个名称来跟踪线程的执行轨迹。

*/

Thread firstThread = new Thread(new ImportUserInputTask(), "第一个线程");

/**

* 创建完线程后,线程不会自动运行!需要调用 Thread 的 start 方法,

* 这样这个线程就处于"就绪"状态,等待CPU调度程序为其分配执行资源,

* 所有资源都分配完成后,进入运行状态,线程开始执行 Runnable 接口中指定的代码逻辑!

*/

firstThread.start();

JAVA入门之如何实现多线程程序开发

4、实现第一个多线程程序 

我们这段代码中,主线程启动后,分别创建名称为 "第一个线程" 和 "第二个线程" 的两个线程,并启动两个线程执行他们各自对应的代码逻辑! 主线程接着执行自己的代码逻辑,结束 : 

public class MultipleThreadExample {

/**

* 一个JAVA程序启动后,就是启动了一个线程,这个线程被称为 "主线程",

* 其执行的代码逻辑就是如下的 main 方法,因为我们总是说,main 方法

* 是 JAVA 程序执行的入口!

**/

public static void main(String[] args) {

    System.out.println("主线程开始执行!");

    System.out.println("主线程开始启动第一个线程!");

    /**

    * 创建一个线程,其第一个参数指定这个线程要执行的代码逻辑!

    * 第二个参数指定线程的名称,

    * 我们可以通过这个名称来跟踪线程的执行轨迹。

    */

    Thread firstThread = new Thread(new ImportUserInputTask(), 

                                                 "第一个线程");

    /**

    * 创建完线程后,线程不会自动运行!需要调用 Thread 的 start 方法,

    * 这样这个线程就处于"就绪"状态,等待CPU调度程序为其分配执行资源,

    * 所有资源都分配完成后,进入运行状态,

    * 线程开始执行 Runnable 接口中    指定的代码逻辑!

    */

    firstThread.start();

    System.out.println("主线程启动的第一个线程开始运行!");

    System.out.println("主线程开始启动第二个线程!");

    Thread secondThread = new Thread(new ImportUserInputTask(), 

                                                      "第二个线程");

    secondThread.start();

    System.out.println("主线程启动的第二个线程开始运行!");

    System.out.println("主线程开始执行自己的业务逻辑!");

    try {

        // 这里就是让主线程实例暂停 2000 毫秒

        Thread.sleep(2000);

    } catch (InterruptedException e) {

        e.printStackTrace();

    }

    System.out.println("主线程执行完毕!");

    }

}

JAVA入门之如何实现多线程程序开发

5、运行结果 : 

主线程开始执行!

主线程开始启动第一个线程!

主线程启动的第一个线程开始运行!

主线程开始启动第二个线程!

第一个线程 开始执行自己的业务逻辑了!

主线程启动的第二个线程开始运行!

主线程开始执行自己的业务逻辑!

第二个线程 开始执行自己的业务逻辑了!

第一个线程 执行完毕自己的业务逻辑!

第二个线程 执行完毕自己的业务逻辑!

主线程执行完毕!

JAVA入门之如何实现多线程程序开发

6、总结 : 

多线程开始是以后程序开发的标准模式,在整体的业务处理流程中,任何一块耗时(或易阻塞)的操作都可以启动一个单独的线程来处理!这样可以大大增强程序的运行效率和用户体验!

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢