Java 多线程基础(一)

197 阅读2分钟

文章分两份,第一份主要内容为 1-4 点

    1. 多线程的概念
  • 2.Java 程序运行原理
    1. 实现多线程的 2 种方式
  • 4.2 种方式的区别
    1. 线程同步(同步锁)
    1. 同步线程之间的通讯

1. 多线程的概念
(1)并发和并行
并行:多个 CPU 实例或是多台机器同时执行一段处理逻辑,是真正的同时
并发:通过 CUP 调度算法,让用户看上去同时去执行,实际上从 CPU 操作层面并不是真正的同时。并发往往需要公共的资源,对公共资源的处理和线程之间的协调是并发的难点。
(2)什么是进程
进程:一个应用程序就是一个进程。
多进程:在操作系统中,能同时运行多个任务程序(并发)。
(3)什么是线程
线程:是操作系统能够进行运算调度的最小单位。
多线程:一个进程中可以并发多个线程,每条线程并行且独立执行不同的任务(提高程序的效率)。
多线程应用场景:服务器同时处理多个用户端请求,教学电脑控屏软件同时共享屏幕给多个电脑。

2.Java 程序运行原理
Java 命令会启动 Java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程,该进程会自动启动一个 “主线程”,然后主线程去调用某个类的 main 方法。
面试题:JVM 的启动是多线程吗
JVM 启动至少启动了垃圾回收线程和主线程,所以是多线程的。

3. 实现多线程的 2 种方式

  • (1). 继承 Thread 类
  • (2). 实现 Runnable 接口

**(1). 继承 Thread 类

  1. 定义类继承 Thread
  2. 重写 run 方法
  3. 把新线程要做的事情写在 run 方法里
  4. 创建线程对象
  5. 开启新线程
    以下是四个 Demo 加强理解**
    Demo1
    Demo2

    Demo3


Demo4
**(2)实现 Runnable 接口

  1. 定义类实现 Runnable 接口
  2. 实现 run 方法
  3. 把新线程要做的事情写在 run 方法里
  4. 创建自定义的 Runnable 的子类对象
  5. 创建 Thread 对象,传入 Runnable
  6. 调用 start()开启新线程**
    以下是两个 Demo 加强理解
    Demo5
    Demo6
  7. 实现多线程的 2 种方式的区别
    继承 Thread:
    好处:可以直接使用 Thread 类中的方法,代码简单。
    弊端:如果已经有了父类,就不能使用这种方法。

实现 Runnable 接口
好处:即使自己定义的线程类已经有了父类也没有关系,接口是可以多实现的。
弊端:不能直接使用 Thread 中的方法,需要先获取到线程对象后,才能得到 Thread 的方法,代码复杂

5.6 点见 Java 编程基础(二)