多线程_线程互斥

设有若干线程共享某个变量,且都对变量有修改, 如果它们之间不考虑相互协调工作, 就会产生混乱。

比如线程A 和 B共用变量x,    都对 x 执行增1 操作。 由于A 和 B没有协调, 两线程 对 x的读取、修改和写入操作会相互交叉, 可能两个线程 读取同样的 x 值,一个线程将修改后的 x

值写入到x 后,另一个线程也把自己 对x 的修改后的新就值写入到x, 这样, x 只记录后一个线程的修改作用。


1. 解决多线程互斥 的办法是, 某个线程在使用共享 变量时,别的线程暂时等待, 等待正在使用 共享 变量的线程使用结束。 等到前一个线程使用结束后, 才让等待使用 共享变量的其他线程中的某一个使用它, 而别的线程 继续等待.  如能保证它们是逐个 使用共享变量,再多的线程使用共享变量也不会产生混乱.



2. 多线程互斥使用共享资源 的程序段,  在操作系统中称为临界段.  临界段是一种加锁的机制, 与多线程 共享资源有关。

临界段的作用是在任何时刻一个共享资源只能供一个线程使用。


3. 在Java 中,使用关键字synchronized 定义临界段。能对共享对象 的操作上锁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值