多线程(一)

多线程概念

多线程,也称为并发执行,是一种编程技术,它允许在单个应用程序中同时运行多个独立的任务或操作。一个线程就是一个 “执行流”. 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码.

线程和进程的区别

  • 进程是包含线程的. 每个进程至少有一个线程存在,即主线程。
  • 进程和进程之间不共享内存空间. 同一个进程的线程之间共享同一个内存空间.
  • 进程是系统分配资源的最小单位,线程是系统调度的最小单位

Java 的线程 和 操作系统线程 的关系

线程是操作系统中的概念. 操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用(例如 Linux 的 pthread 库).
Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装.

创建线程

1: 继承 Thread 来创建一个线程类.

class MyThread extends Thread {
   
  @Override
  public void run() {
   
    System.out.println("这里是线程运行的代码");
 }
 }

1.2: 创建 MyThread 类的实例

MyThread t = new MyThread()

1.3调用 start 方法启动线程

2:实现 Runnable 接口

class MyRunnable implements Runnable {
   
  @Override
  public void run() {
   
    System.out.println("这里是线程运行的代码");
 }

2.2创建 Thread 类实例, 调用 Thread 的构造方法时将 Runnable 对象作为 target 参数

Thread t = new Thread(new MyRunnable());

2.3 调用 start 方法

t.start(); // 线程开始运行

注意:
继承 Thread 类, 直接使用 this 就表示当前线程对象的引用.
实现 Runnable 接口, this 表示的MyRunnable 的引用. 需要使用 Thread.currentThread()

其他变形

  • 匿名内部类创建 Thread 子类对象
  • 匿名内部类创建 Runnable 子类对象
  • lambda 表达式创建 Runnable 子类对象
// 使用匿名类创建 Thread 子类对象
Thread t1 = new Thread() {
   
  @Override
  public void run() {
   
    System.out.println("使用匿名类创建 Thread 子类对象");
 }
};
// 使用匿名类创建 Runnable 子类对象
Thread t2 = new Thread(new Runnable() {
   
  @Override
  public void run() {
   
    System.out.println("使用匿名类创建 Runnable 子类对象");
 }
});
// 使用 lambda 表达式创建 Runnable 子类对象
Thread t3 = new Thread(() -> System.out.println("使用匿名类创建 Thread 子类对象"));
Thread t4 = new Thread(() -> {
   
  System.out.println("使用匿名类创建 Thread 子类对象");
})

相关推荐

  1. 线

    2024-02-09 15:38:02       53 阅读
  2. swift 线锁() NSLock

    2024-02-09 15:38:02       55 阅读
  3. 线八股文常见面试题总结(

    2024-02-09 15:38:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-09 15:38:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-09 15:38:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-09 15:38:02       87 阅读
  4. Python语言-面向对象

    2024-02-09 15:38:02       96 阅读

热门阅读

  1. loss的相对曲率的测量

    2024-02-09 15:38:02       50 阅读
  2. 第58讲 动态数据渲染订单查询实现

    2024-02-09 15:38:02       47 阅读
  3. FPGA时钟资源与设计方法——Xilinx(Vivado)

    2024-02-09 15:38:02       48 阅读
  4. EEEE3084 Scalable cross platform software design

    2024-02-09 15:38:02       45 阅读
  5. c入门第十一篇——物以类聚(数组)

    2024-02-09 15:38:02       53 阅读