Java多线程学习笔记

时间:2023-02-25 11:57:17

进程和线程的概念

  1. 进程:程序(任务)的执行过程。

    持有资源(共享内存,共享文件)和线程

  2. 线程:系统中最小的执行单元。

    同一进程中有多个线程。
    线程共享进程的资源。

线程的交互:互斥/同步

Java语言对线程的支持示意图:
Java多线程学习笔记


Thread常用方法:

线程的创建:Thread(String name) / Thread(Runnable target)

线程的方法:

  • 启动线程:void start()
  • 线程休眠:void sleep(long millis)
  • 使其他线程等待当前线程终止:void join(long millis)
  • 当前运行线程释放处理器资源:void yield()

获取当前线程引用:static Thread currentThread()

停止线程的方法:

  1. stop方法(不推荐)
  2. 使用退出标志位(推荐)
  3. interrupt方法(初衷:不是为了停止线程,而是中断线程)

线程的交互:互斥与同步

  1. 互斥的实现:synchronized(intrinsic lock)
  2. 同步的实现:wait()/notify()/notifyAll()

总结:

创建线程的三种方式对比:

1.采用实现Runnable,Callable接口的方式创建多线程

  • 优势是:线程类知识实现了Runnable或Callable接口,还可以继承其他类
  • 在这种方式下,多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况。
  • 劣势是:编程比较复杂,访问当前线程必须使用Thread.currentThread()方法

2.采用继承Thread类的方式创建多线程

  • 优势是:编写简单,访问当前线程直接使用this即可。
  • 劣势是:因为线程类已经继承了Thread类,所以不能再继承其他父类。

一般推荐采用实现Runnable接口,Callable接口的方式来创建多线程。
-