相关疑难解决方法(0)

一个线程可能会死锁吗?

从技术上讲,Java中的线程是否可以自行解锁?

我在一段时间的采访中被问到这个问题并回答说这是不可能的,但面试官告诉我这是.不幸的是,我无法获得如何实现这种僵局的方法.

这让我思考,我能想到的唯一情况就是你可以实现这一点的地方就是你有一个RMI服务器进程,其中包含一个调用自身的方法.调用该方法的代码行放在synchronized块中.

这甚至可能还是面试官不正确?

我正在考虑的源代码是这些行(其中testDeadlock在RMI服务器进程中运行)

public boolean testDeadlock () throws RemoteException {
    synchronized (this) {
        //Call testDeadlock via RMI loopback            
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock rmi

59
推荐指数
8
解决办法
1万
查看次数

java中的程序化死锁检测

如何以编程方式检测Java程序中是否发生了死锁?

java concurrency multithreading deadlock

57
推荐指数
4
解决办法
4万
查看次数

com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件:目标进程未响应或未加载HotSpot VM

AttachNotSupportedException 在linux(ubuntu 64bit)上运行jmockit测试时得到的.Java版本是1.7.0_51.这个JDK来自Oracle.使用ant运行测试(可能不相关)

查看堆栈跟踪.

[junit] 
[junit] java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89)
[junit]     at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
[junit]     at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
[junit]     at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:136)
[junit]     at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169)
[junit]     at junit.framework.TestResult.<clinit>(TestResult.java:15)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016)
[junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79)
[junit]     ... 8 more
[junit] Exception …
Run Code Online (Sandbox Code Playgroud)

linux jmockit java-7

11
推荐指数
3
解决办法
1万
查看次数

如何在Java中杀死死锁线程?

我想杀死陷入死锁状态的线程.首先,我们可以使用类中的方法检测处于死锁状态的线程ID.findDeadlockedThreads()ThreadMXBeanjava.lang.management

于是,我想通过杀死线程ID线程,因此我有两个相关的问题:
(1)如何获得通过线程ID线程的控制?
(2)如何杀死被阻塞的线程?我认为调用interrupt()方法会给线程一个异常并将杀死线程.

java multithreading deadlock interrupt

8
推荐指数
2
解决办法
9182
查看次数

死锁和同步方法

我在Stack Overflow上找到了一个代码,我认为它与我所面临的非常相似但我仍然不明白为什么会进入死锁状态.该示例取自Java中的死锁检测:

Class A
{
  synchronized void methodA(B b)
  {
    b.last();
  }

  synchronized void last()
  {
    System.out.println(“ Inside A.last()”);
  }
}

Class B
{
  synchronized void methodB(A a)
  {
    a.last();
  }

  synchronized void last()
  {
    System.out.println(“ Inside B.last()”);
  }
}

Class Deadlock implements Runnable 
{
  A a = new A(); 
  B b = new B();

  // Constructor
  Deadlock()
  {
    Thread t = new Thread(this); 
    t.start();
    a.methodA(b);
  }

  public void run()
  {
    b.methodB(a);
  }

  public static void main(String args[] …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization deadlock

5
推荐指数
1
解决办法
1万
查看次数

如何分析Java源代码并确保它是线程安全的

我正在阅读java代码以确保它是线程安全的.

据我所知,方法中的任何局部变量都是线程安全的,因为它属于堆栈内存地址.任何类/实例变量都不是线程安全的,因为它属于堆内存,由其他线程共享.

根据经验,我可以在触及类变量的每个方法上放置一个synchronized关键字.

是否有任何eclipse插件,或者我可以分析/防止多线程问题的规则?

java multithreading thread-safety

5
推荐指数
1
解决办法
3212
查看次数

许多线程等待锁定一个对象,但没有线程持有该锁

我有一个应用程序当前被卡住,我正在尝试了解原因。在kill -3(线程转储)输出中,我看到许多线程正在等待锁定对象(特别是等待Vector的同步方法),但我没有看到任何线程持有该锁。

知道如何调试吗?

谢谢

PS 我知道 Vector 很旧,更推荐使用 ArrayList,但这是我正在尝试调试的遗留代码。

java multithreading

5
推荐指数
1
解决办法
2273
查看次数

死锁线程检查

有人能告诉我如何在Java多线程应用程序中找到"有多少线程处于死锁状态"?找出死锁线程列表的方法是什么?

我听说过Thread Dump和Stack Traces,但我不知道如何实现它.

  • 我还想知道Java 5中为线程引入了哪些新功能?

请告诉我您的意见和建议.

java multithreading

3
推荐指数
1
解决办法
784
查看次数