多线程基础概念,知识点
进程:资源分配的最小单位,线程:调度执行的最小单位
一、为什么使用多线程?多线程久一定快嘛?它会带来其他什么问题
资源利用率:某些情况下,程序必须等待外部操作执行完,才能继续操作,此时其实可以利用多线程干其他事情。
公平性:不同的用户和程序对于计算机上的资源有着同等的使用权。
便利性:在计算多个任务时,应该编写多个程序,这样处理起来更加便利。
不一定更快;多线程带来的问题:
1.上下文的切换:CPU通过每个现场分配CPU时间片来实现这个机制。不同的时间片非常短,所以不同的线程之间需要来回切换。
2.多线程中会发生死锁,造成程序无法进行下去
3.资源限制:资源限制是指在并发编程时,程序的执行速度受限于计算机硬件资源。
4.线程安全性问题,多线程运行下,数据发生错误读写
二、什么是线程安全性?
当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么这个类就是线程安全的。
扫描二维码关注公众号,回复: 13297208 查看本文章![]()
三、多线程的三大特性
3.1 原子性
要么执行,要么都不执行;提供了互斥访问,同一时刻只能有一个线程对其操作,这个操作对于其他线程来说是原子的
3.2 有序性
一个线程观察其他线程中的指令执行顺序,由于指令重排的存在,该观察结果一般杂乱无序。
3.3 可见性
一个线程对主内存的修改能够及时被其他线程观察。( Volatile 变量可以保持可见性)
参考资料
《JAVA 并发编程实战》
《JAVA并发编程的艺术》