并发编程学习笔记<一>

多线程基础概念,知识点

进程:资源分配的最小单位,线程:调度执行的最小单位

一、为什么使用多线程?多线程久一定快嘛?它会带来其他什么问题

资源利用率:某些情况下,程序必须等待外部操作执行完,才能继续操作,此时其实可以利用多线程干其他事情。

公平性:不同的用户和程序对于计算机上的资源有着同等的使用权。

便利性:在计算多个任务时,应该编写多个程序,这样处理起来更加便利。

不一定更快;多线程带来的问题:

1.上下文的切换:CPU通过每个现场分配CPU时间片来实现这个机制。不同的时间片非常短,所以不同的线程之间需要来回切换。

2.多线程中会发生死锁,造成程序无法进行下去

3.资源限制:资源限制是指在并发编程时,程序的执行速度受限于计算机硬件资源。

4.线程安全性问题,多线程运行下,数据发生错误读写

二、什么是线程安全性?

当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么这个类就是线程安全的。

三、多线程的三大特性

3.1 原子性

要么执行,要么都不执行;提供了互斥访问,同一时刻只能有一个线程对其操作,这个操作对于其他线程来说是原子的

3.2 有序性

一个线程观察其他线程中的指令执行顺序,由于指令重排的存在,该观察结果一般杂乱无序。

3.3 可见性

一个线程对主内存的修改能够及时被其他线程观察。( Volatile 变量可以保持可见性

参考资料

《JAVA 并发编程实战》

《JAVA并发编程的艺术》

猜你喜欢

转载自blog.csdn.net/weixin_43732955/article/details/115673368