粤嵌学习打卡第9天(多线程学习笔记 一)

本文探讨了多线程产生的原因,包括提高CPU利用率、解决任务分配公平性和简化程序设计。接着,解释了线程安全的概念,通过示例展示了线程不安全的情况,并总结了线程不安全的三个原因:原子性、可见性和有序性。最后,介绍了Java中保证线程安全的策略,如使用Atomic类、synchronized关键字和volatile变量。
摘要由CSDN通过智能技术生成

本片博客一起带领你走向面试常问之------------多线程

  • 为什么会有多线程?
  • 什么是线程安全?
  • 怎么样保证线程安全?

1、为什么会有多线程?

显然,线程安全的问题只会出现在多线程环境中,那么为什么会有多线程呢?
最早期的计算机十分原始,还没有操作系统。想要使用计算机时,人们先把计算机可以执行的指令刻在纸带上,然后让计算机从纸带上读取每一条指令,依次执行。这时候的计算机每次只能执行一个任务,是地地道道的单线程。
这种情况下就产生了三个问题:

1. 计算资源的严重浪费

计算机在执行任务时,总少不了一些输入输出操作,比如计算结果的打印等。这时候CPU只能等待输入输出的完成。所以往往一个任务执行下来,可能CPU大部分人时间都是空闲的。而在当时CPU可是一种非常昂贵的资源,于是人们就想怎么能够提高CPU的利用率呢?

2. 任务分配的不公平

现在假如我们有十个任务需要执行,这可是很常见的。而计算机每次只能执行一个任务,直到执行结束,中间不能中断。那么问题来了,是先执行张三给的任务呢?还是先干李四的活呢?张三和李四可能拥有同样的优先级,因此无论怎么分配任务总会有人不满意,觉得不公平。

3. 程序编写十分困难

计算机一次只能执行一个任务,所以编写程序的时候往往要把很多工作集成到一个程序中,这给程序的编写人员带来了极大的挑战。能不能把程序分模块编写,然后让模块之间只进行必要的通信呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值