ToB企服应用市场:ToB评测及商务社交产业平台

标题: JavaSE:多线程详解笔记 [打印本页]

作者: 科技颠覆者    时间: 2023-4-4 14:03
标题: JavaSE:多线程详解笔记
JavaSE:多线程学习

01 初识进程

1.1 Process & Thread

1、首先简要介绍程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,只是一个静态的概念。
2、进程则是执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位。
3、通常在一个进程中可以包含若干线程。线程是CPU调度和执行的单位。
PS:很多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在只有一个CPU的情况下,在同一个时间点,CPU只能执行一条代码。由于切换速度很快,所以会出现同时运行的错觉。
4、线程:
02 创建线程

2.1 多线程有三种创建方式

1、Thread class(通过继承Thread类)
2、Runnable接口(实现Runnable接口)
3、Callable接口(实现Callable接口)
2.2 Thread类

1、自定义线程类继承Thread类
2、重写run()方法,编写线程执行体
3、在别的类中创建该线程单位,调用start()方法启动多线程。
2.1-2.2小结

继承Thread类
实现Runnable接口
2.3 Callable接口

1、实现Callable,需要返回值类型
2、重写Call方法,需要抛出异常
3、创建目标对象
4、创建执行服务
  1. ExecutorService ser = Executors.newFixedThreadPool(线程数量)
复制代码
5、提交执行
  1. Future<Boolean> 线程名 = ser.submit(对象名);
复制代码
6、获取返回值
  1. 返回值类型 返回值名称 = 线程名.get();
复制代码
7、服务关闭
  1. ser.shutdown();
复制代码
2.4 静态代理

1、真实对象和代理对象要实现同一接口
2、代理对象要代理真实角色
好处:
代理对象可以做很多真实角色做不了的事情
真实对象可以专注于自己的事
2.5 Lambda表达式

1、为什么要使用Lambda表达式
2、Lambda表达式的核心是采取函数式编程思想。因此,理解Function Interface(函数式接口)是学习Lambda表达式的关键。
3、函数式接口的定义:
  1. public interface Runnable{
  2.     public abstract void run();
  3. }
复制代码
Lambda表达式使用注意:

  1. new Thread(()->{语句});
复制代码
  1. 对象名 = 参数->{语句1;语句;}
复制代码
03 线程状态

3.1 线程状态简介

!
3.1.1 线程停止

1、建议线程正常停止,限制次数,不要使用死循环
2、建议使用标志位,即外部调整标志位停止线程运行
3、不要使用stop或destroy等过时或者JDK不推荐的方法
3.1.2 线程休眠

3.1.3 线程礼让

3.1.4 线程合并

3.2 线程状态

3.2.1 线程状态观测

3.2.2 线程优先级

​                   2、优先级低只是意味着获得调度的概率低,并不是优先级低一定就会被后调用。归根结底还是要看CPU的管理。
3.2.3 守护线程和用户线程

3.3 线程同步

3.3.1 线程同步简介

1、并发:同一个对象被多个线程同时操作
2、处理多线程时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候就需要线程同步。线程同步实际上是一种等待机制,多个需要访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,再调用下一个线程。
3、队列和锁:
​         由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突的问题,为了保证数据在方法中被访问的正确性,在访问时加入锁机制synchronized。当一个线程获得对象的排它锁时,就会独占相关资源,其他线程必须等待该线程运行完毕释放锁。但由此会带来一些问题:
3.3.2 三大不安全案例

3.3.2.1 系统购票

(详见代码)
3.3.2.2 银行取钱

(详见代码)
3.3.2.3 线程安全性

(详见代码)
3.3.3 同步方法和同步块

3.3.3.1 同步方法

3.3.3.2 同步块

3.3.4 初识JUC

(详见代码)
3.4 死锁和Lock锁

04 线程协作

4.1 线程通信问题

4.2 解决办法一:管程法

4.3 解决办法二:信号灯法

4.4 解决办法三:线程池

05 总结


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4