忘却来的地方
2016-08-24 13:13
采纳率: 100%
浏览 3.1k
已采纳

java多线程中如何实现根据不同字符串或者数字加不同的锁

java多线程中如何实现根据不同字符串或者数字加不同的锁,从而实现在特定参数下才并发访问一段代码?类似synchronized(int a){} 或者 synchronized(String a){}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • bashenmail 2016-08-25 02:32
    已采纳

    用这个锁ReentrantLock,把不同的关键字放到map中,Map 这样,遇到 关键字了,取出lock,
    调用 lock.lock();用完之后lock.unlock();一定要放到finally中解锁,要不出异常一致锁着

    已采纳该答案
    打赏 评论
  • 小范哎呦 2016-08-24 15:01

    你有理解他那个参数的意义吗,他那个是用于判断当前线程的,找你的说法做一个if不就行了吗

    打赏 评论
  • _1_1_7_ 2016-08-25 03:02

    synchronized(lock) 里面的lock只能是对象,不能是int这样的基础类型,可以把int包装成Integer对象:

     int a=1222;
     Integer n=new Integer(a);
     synchronized(n){
     ......
     }
    
    打赏 评论

相关推荐 更多相似问题