java代码段加锁 java锁怎么实现

java中 请问我应该如何如何锁这段代码才符合要求public ObjectgetObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
【java代码段加锁 java锁怎么实现】map.put(key,o)
}else {
return map.get(key);
}}// 格式没法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的实例来加锁,但是map是static的,无法锁住
// MyTest的多个实例在多个线程中的请求
//禾木双子 :如果A线程在getObject方法的第二行停止,此时B线程进入getObject后执行部分代码, 此时B线程停止,A线程启动,他不会执行'多线程处理', 仍然有线程线程安全问题,(想像一下更多的线程进入该方法的情况,num甚至会得到负值)
java加锁对象是一个锁标志 。按照先到先得java代码段加锁的原则java代码段加锁,如果有多个线程都会执行代码 , 并使用同一个对象作为锁,
synchronize(对象){
....
}
那么,先执行这段代码java代码段加锁的那个线程,将会获得这个对象锁,而当这个线程执行这段代码的时候,其java代码段加锁他线程也是使用这个对象作为锁的,就不能执行这段代码 , 知道最初得到这个锁的线程运行完这段代码,然后再把锁分配给下一个线程执行 。
java代码右下角加锁能运行吗为什么能 。java代码右下角加锁能运行,是因为多线程共享的代码区域需要上锁,防止多线程同时访问代码块 , 造成线程安全问题 。
关于java代码段加锁和java锁怎么实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读