在一个项目中,线程执行到一定的地方就会卡住了一样,线程不停止,也不继续执行; 
这个线程是循环执行的,关键是偶尔才会出现一次这个状况,请问这可能是哪里出了问题?非常的费解 

解决方案 »

  1.   

    线程死锁?
    你用Java Profile 这个监视器.调试线程....
      

  2.   

    输出所有的线程状态,发现异常的就处理一下。  public static String[] getThreadNames() {
        ThreadGroup group = Thread.currentThread().getThreadGroup();
        ThreadGroup parent = null;
        while ( (parent = group.getParent()) != null ) {
          group = parent;
        }
        Thread[] threads = new Thread[group.activeCount()];
        group.enumerate(threads);
        java.util.HashSet set = new java.util.HashSet();
        for (int i=0; i < threads.length; ++i) {
          if (threads[i] != null && threads[i].isAlive()) {
            try {
              set.add(threads[i].getThreadGroup().getName()+","
                      +threads[i].getName()+","
                      +threads[i].getPriority());
            } catch (Throwable e) {e.printStackTrace();}
          }
        }
        String[] result = (String[]) set.toArray(new String[0]);
        java.util.Arrays.sort(result);
        return result;
      }
      

  3.   

    用 Jstack看一下,停在哪里了,是不是互锁了,应该很容易。jstack是JDK自带的,搜一下就知道参数了