代码之家  ›  专栏  ›  技术社区  ›  Eugene

如何跟踪未知线程/可运行线程?

  •  1
  • Eugene  · 技术社区  · 14 年前

    我正在开发javamidi应用程序。

    我一直在调试异常,这是在宋末调度。正如我所期望的:应用程序正在播放,每次我检查序列记号位置以在应用程序播放行中表示它,就像作为播放器一样。

    所以我想知道如何才能得到这个线程开始运行的源或点?

    以下是异常输出:

    Exception in thread "Thread-23" java.lang.IllegalStateException: Sequencer is not open
        at org.tritonus.share.midi.TSequencer.checkOpen(TSequencer.java:296)
        at org.tritonus.share.midi.TSequencer.stop(TSequencer.java:256)
        at org.tritonus.midi.device.java.JavaSequencer.run(JavaSequencer.java:291)
        at java.lang.Thread.run(Unknown Source)
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Andre Holzner    14 年前

    org/tritonus/midi/device/java/JavaSequencer.java 具有以下代码:

    protected void openImpl()
        {
                ...
                m_thread = new Thread(this);
                ...
                m_thread.start();
        }
    

    同一个班级里还有其他地方 this.start() 称为:in setSequence(..) setTickPosition(..) start() 但在课堂之外。

        2
  •  3
  •   dty    14 年前

    或者,您可以提供一个替换线程实现,并将其置于rt.jar公司通过使用bootclasspath选项,并让这个替换线程在其构造函数中记录其名称和stacktrace。