的主要问题是,内“//做大量的下方东西”为什么谁最初写这个检查Java线程暂停,结束优雅并中止
if (stopscript)
return;
的人会实际上什么帮助? Obs的stopscript()调用不会保证线程将被停止?当我读到像http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html这样的东西时,我并没有得到实际完成工作的地方。在他们的run()方法中,我不确定在哪里插入要完成的实际工作。
我有一个类观测数据中,我有一个本地类的编剧和使用它像这样:
Scripter sscript;
Thread scriptthread;
它具有以下(不整类),只是它位::
实例化的编剧的内观测值:
sscript = new Scripter(...);
scriptthread = new Thread(exesscript);
Obsrunning = true;
scriptthread.start();
这些是OB的其它方法被点击停止或结束按钮时被调用。
public void stopscript()
{
sscript.stopscript();
if (obssequencepaused)
{
sscript.resumescript();
JBpause.setText("PAUSE");
}
sscript = null;
}
public void endscript()
{
sscript.endscript();
if (obssequencepaused)
{
sscript.resumescript();
JBpause.setText("PAUSE");
}
}
的编剧类信息...
public class Scripter implements Runnable
{
@Override
public void run()
{
//does lots of stuff
}
final public void stopscript()
{
this.stopscript = true;
scriptthread.interrupt();
}
final public void pausescript()
{
this.pausescript = true;
}
final public void resumescript()
{
this.pausescript = false;
}
// sets parameters so loops should just fall through and main run() finishes
final public void endscript()
{
endscript = true;
numpositions = 0;
firstRepeats = 1;
repeats = 1;
}
}
问题:这段代码是否运行了一个GUI库,如Swing(我看到你正在调用'setText(...)')?此外,您还需要了解Java命名约定并尝试坚持使用它们,特别是在发布其他人(我们!)的代码来阅读,审阅,理解和帮助您时,由于不遵守这些规则,您会使其更难为了我们。请注意,变量和方法名称应以小写字母和类名开头,并带有大写字母。 –
如果是我的,我会在这段代码中改变很多。我可能会或可能不会这样做。这个代码不是传统的。对不起,如果这对你们来说更加困难,并且感谢你的尝试。 – evernoob