Java并发编程篇三:如何深入理解线程同步机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3490个文字,预计阅读时间需要14分钟。
有感兴趣的伙伴可以回顾下前两篇Java并发编程专题文章——线程基础知识 + Java并发编程专题(二)——如何创建并运行Java线程+ 在实际开发中,我们或多或少的都经历过这样的场景:某段代码执行时间过长,导致程序响应缓慢。
有兴趣的朋友可以回顾一下前两篇
java并发编程专题(一)----线程基础知识
java并发编程专题(二)----如何创建并运行java线程
在现实开发中,我们或多或少的都经历过这样的情景:某一个变量被多个用户并发式的访问并修改,如何保证该变量在并发过程中对每一个用户的正确性呢?今天我们来聊聊线程同步的概念。
一般来说,程序并行化是为了获得更高的执行效率,但前提是,高效率不能以牺牲正确性为代价。如果程序并行化后, 连基本的执行结果的正确性都无法保证, 那么并行程序本身也就没有任何意义了。因此, 线程安全就是并行程序的根本和根基。解决这些问题从临界区的概念开始。临界区是访问一个共享资源在同一时间不能被超过一个线程执行的代码块。
java为我们提供了同步机制,帮助程序员实现临界区。当一个线程想要访问一个临界区,它使用其中的一个同步机制来找出是否有任何其他线程执行临界区。如果没有,这个线程就进入临界区。否则,这个线程通过同步机制暂停直到另一个线程执行完临界区。当多个线程正在等待一个线程完成执行的一个临界 区,JVM选择其中一个线程执行,其余的线程会等待直到轮到它们。临界区有如下的规则:
- 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
- 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
- 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。
本文共计3490个文字,预计阅读时间需要14分钟。
有感兴趣的伙伴可以回顾下前两篇Java并发编程专题文章——线程基础知识 + Java并发编程专题(二)——如何创建并运行Java线程+ 在实际开发中,我们或多或少的都经历过这样的场景:某段代码执行时间过长,导致程序响应缓慢。
有兴趣的朋友可以回顾一下前两篇
java并发编程专题(一)----线程基础知识
java并发编程专题(二)----如何创建并运行java线程
在现实开发中,我们或多或少的都经历过这样的情景:某一个变量被多个用户并发式的访问并修改,如何保证该变量在并发过程中对每一个用户的正确性呢?今天我们来聊聊线程同步的概念。
一般来说,程序并行化是为了获得更高的执行效率,但前提是,高效率不能以牺牲正确性为代价。如果程序并行化后, 连基本的执行结果的正确性都无法保证, 那么并行程序本身也就没有任何意义了。因此, 线程安全就是并行程序的根本和根基。解决这些问题从临界区的概念开始。临界区是访问一个共享资源在同一时间不能被超过一个线程执行的代码块。
java为我们提供了同步机制,帮助程序员实现临界区。当一个线程想要访问一个临界区,它使用其中的一个同步机制来找出是否有任何其他线程执行临界区。如果没有,这个线程就进入临界区。否则,这个线程通过同步机制暂停直到另一个线程执行完临界区。当多个线程正在等待一个线程完成执行的一个临界 区,JVM选择其中一个线程执行,其余的线程会等待直到轮到它们。临界区有如下的规则:
- 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
- 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
- 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。

