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

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

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

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

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

 int a=1222;
 Integer n=new Integer(a);
 synchronized(n){
 ......
 }