当前位置:   article > 正文

java让线程暂停,如何在Java中停止,暂停,取消线程

java让线程暂停,如何在Java中停止,暂停,取消线程

i'm developing an app in java that launches some threads that do some jobs and update a JTable with a JProgressBar.

I develope a JPopupMenu on the JTable that has some JMenuItem:

Pause

Stop

Cancel

Resume

So i want to be able to do it.

When user add new thread in JTable i save the thread in a ArrayList, so i have to implement

stop.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent ae) {

}

});

and the other..

so i try , with the hypothesis that i have the index of current thread:

Thread t = working.get(selectedThread); //where working is my `ArrayList`

t.interrupt();

but nothing.. it continue working...

so i try:

try {

working.get(actualRow).wait();

} catch (InterruptedException ex) {

Logger.getLogger(PannelloRicerca.class.getName()).log(Level.SEVERE, null, ex);

}

but it get me IllegalStateMonitorException on wait(), so i don't know how to do.. can someone help me?

解决方案

The IllegalStateMonitorException is because a thread can only wait in an object it it 'owns' (I don't remember if it is the right term) it.

You need to synchronize by the same object first, in order to ensure that nobody else is already waiting on this object.

synchronize (working.get(actualRow)) {

working.get(actualRow).wait();

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/1004277
推荐阅读
相关标签
  

闽ICP备14008679号