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

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

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

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

    点赞 评论 复制链接分享
  • dasifukuagou 小范哎呦 2016-08-24 15:01

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

    点赞 评论 复制链接分享
  • u011606457 _1_1_7_ 2016-08-25 03:02

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

     int a=1222;
     Integer n=new Integer(a);
     synchronized(n){
     ......
     }
    
    点赞 评论 复制链接分享

相关推荐