小编use*_*230的帖子

同步死锁(String intern())

我用户sun jdk 1.5 ThreadPoolExecutor(24,24,60,TimeUnit.SECONDS,new LinkedBlockingQueue()).soemtime我使用jdb工具查找线程池中所有线程的状态是"在监视器中等待",代码是:

    String key = getKey(dt.getPrefix(), id);
    synchronized (key.intern()) {      ----->
Run Code Online (Sandbox Code Playgroud)

"synchronized(key.intern())"中有问题吗?


我使用jdb工具获取以下信息,24个线程的状态是"在监视器中等待",这意味着24个线程在"key.intern()"处于死锁状态.

(java.lang.Thread)0x28 pool-3-thread-2在监视器中等待

(java.lang.Thread)0x27 pool-3-thread-3在监视器中等待

(java.lang.Thread)0x1b pool-3-thread-4在监视器中等待

(java.lang.Thread)0x1a pool-3-thread-5在监视器中等待

(java.lang.Thread)0x19 pool-3-thread-6在监视器中等待

(java.lang.Thread)0x18 pool-3-thread-7在监视器中等待

(java.lang.Thread)0x17 pool-3-thread-8在监视器中等待...

所以结果是:在多线程环境中,Sting intern()方法可能会死锁,好吗?

java string deadlock synchronized string-interning

7
推荐指数
2
解决办法
8561
查看次数

标签 统计

deadlock ×1

java ×1

string ×1

string-interning ×1

synchronized ×1