黑马程序员技术交流社区

标题: 【广州校区】【原创】 Java并发编程 [打印本页]

作者: 新君    时间: 2019-7-2 21:29
标题: 【广州校区】【原创】 Java并发编程
1 问题引入
   这样一个场景:在Java中,有多个线程并行读或者写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。
   在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问。


2 解决方案
   synchronized,我们谓之锁,主要用来给方法、代码块加锁。当某个方法或者代码块使用synchronized时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但是,其余线程是可以访问该对象中的非加锁代码块的。

3 原理
   在java中为了实现临界区提供了同步机制。当一个线程试图访问一个临界区时,他将使用一种同步机制来查看是不是已经有其他线程进入临界区。
   如果没有则他就可以进入临界区,否则他就会被同步机制挂起,指定进入的线程离开这个临界区。   






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2