多线程同步的实现最终依赖锁机制。我们可以想象某一共享资源是一间屋子,每个人都是一个线程。丛神举当A希望进入房间时,他必须获得门锁,一旦A获得门锁,他进去后就立刻将门锁上,于是B,C,D...就不得不在门外等待,直到A释放锁出来后,B,C,D...中的某一人抢到了该锁(具体抢法依赖于JVM的实现,可以先到先得,也可以随机挑选),然后进屋又将门锁上。这瞎穗样,任一时刻最多有一人在屋内(使用共享资源)。 Java语言规范内置了对多线程的支持。对于Java程序来说,每一个对象实例都有一把“锁”,一旦某个线程获得了该锁,别的线程如果希望获得该锁,只能等待这个线程释放锁之渗碧后。获得锁的方法只有一个,就是synchronized关键字。
成都创新互联,专注为中小企业提供官网建设、营销型网站制作、自适应网站建设、展示型网站设计制作、成都做网站等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
synchronized(这里的对象你看成一道门) {
这里是一个人进来了,把门反锁了
需要圆并液同步操作的代码
这里是里面的人事情做完了,出去了,门开橘物着其他人可以进了
}
至于怎么锁的,这是蔽游java和jvm的规定和实现细节,作为普通程序员没必要深入那么多。
多线程的同步锁通过synchronized实现
有俩种橡乱方式 一种是在代码块加锁梁旁档
代码块加锁时可以指定任意类的实例过的对象
即锁在这个对象上(任何对象都有一个锁)
使同一时间内只有一个线程可以访问到代码块中
另外一种就是以synchronized关键字修饰方法
这时加锁的对象就是启搜类本身的实例 即this
以上 O(∩_∩)O
能。java代码蠢凯右下角加锁带裤唤能运行,是因为多线程共享的代码区域需要纯拆上锁,防止多线程同时访问代码块,造成线程安全问题。