我是一个线程,生活在JVM(Java虚拟机)中, 这一段日子过得有些无聊,整个世界似乎只有这一个人,天天忙着执行代码,想休息一下都很难。
我听说人类写的代码中有些特殊的地方,叫做临界区,比如synchronized修饰的方法或者代码块,他们非常神奇,在同一时刻JVM老大只允许一个线程进入执行。
实际上,老大设置了一把锁,抢到了这把锁就可以执行,否则只能阻塞,等待别人释放锁。
老大说,阻塞就是不用干活了,老老实实地等着就行。
竟然还有这等美事! 赶紧让我阻塞一次吧。
可是老大又说:“每次设置锁我都得和操作系统打交道,请他在内核中维护一个什么Mutex(互斥量)的东西,他还得把你们这些线程阻塞,切换,这可是一笔巨大的费用啊,所以这些锁还是少用为妙。”
我运气也不好,我不知道执行了多少代码,调用了多少函数,竟然一次也没遇到临界区!
我想也许这个程序员编程时不小心,没有考虑多线程并发的情况; 也有可能是这些程序大部分都是无状态的,多少个线程执行都没有问题。
于是我只好一直执行下去, 不知道过了多少天,我激动地发现,一个synchronized修饰的代码块终于出现了:
Account account = ...
synchronized(account){
...临界区的代码...
<本文发布于:2024-01-28 02:28:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063801414127.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |