网站建设资讯

NEWS

网站建设资讯

Java加锁代码怎么写 java 加锁

java中 请问我应该如何如何锁这段代码才符合要求

public Object getObject(String key,Object o) {

创新互联主要从事成都做网站、成都网站建设、成都外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务明水,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

synchronized (map) {

if(map.get(key)==null) {

map.put(key,o)

}else {

return map.get(key);

}}// 格式没法弄,自己弄一下

}

// demol0326 的回答意思使用MyTest的实例来加锁,但是map是static的,无法锁住

// MyTest的多个实例在多个线程中的请求

//禾木双子 :如果A线程在getObject方法的第二行停止,此时B线程进入getObject后执行部分代码, 此时B线程停止,A线程启动,他不会执行'多线程处理', 仍然有线程线程安全问题,(想像一下更多的线程进入该方法的情况,num甚至会得到负值)

java加锁

对象是一个锁标志。按照先到先得的原则,如果有多个线程都会执行代码,并使用同一个对象作为锁,

synchronize(对象){ .... }

那么,先执行这段代码的那个线程,将会获得这个对象锁,而当这个线程执行这段代码的时候,其他线程也是使用这个对象作为锁的,就不能执行这段代码,知道最初得到这个锁的线程运行完这段代码,然后再把锁分配给下一个线程执行。

java 线程加锁问题(有代码)

你的代码我没看,也没运行。

但我可以很明确的告诉你,你是没有办法控制线程的执行顺序的,不知道你学没学操作系统,等你学了线程调度你就知道为什么了,多线程的一个特点就是不可重现性。像sleep这些函数只能在一定程度上控制你的线程执行,但根本不是绝对的。因为当线程1在sleep时,系统也不一定会调用另一线程。

还有加锁也不是为了控制线程的执行顺序,它的目的是为了保护共享的互斥资源。


当前题目:Java加锁代码怎么写 java 加锁
分享链接:http://njwzjz.com/article/doishoe.html