我对java有一些问题。
例如,
public class Test implements Runnable{
Thread thread;
public Test() throws Exception{
thread = new Thread(this);
thread.setName(getClass().getName() + thread.getId());
thread.start();
}
public void run() {
System.out.println("start");
try {
while(!thread.isInterrupted())
Thread.sleep(Long.MAX_VALUE);
}
catch(InterruptedException ie) {
System.out.println("interrupted");
}
System.out.println("stop");
}
public void stop() {
thread.interrupt();
}
}
此代码现在是无限睡眠状态。 然后,我在另一个Java代码中找到这个线程(类似这样的方式 - http://www.ehow.com/how_7467934_java-thread-runtime.html)
我将“找到的线程”转换为Test class
测试测试=(测试)发现线程;
最后,
test.stop();
工作!
我想在其他应用程序中找到并停止此线程(绝对不相同)
我不熟悉Java,这也就像我所知道的那样,代码方式在C ++或其他方面不起作用。
我的代码是否合理?没问题?我担心......
请告诉我。非常感谢。(我不擅长英语。对不起)
答案 0 :(得分:-1)
您的代码没有问题!一切都很完美。您可以省略在休眠循环中检查线程的中断状态,因为一旦线程被中断,它将在尝试休眠或等待时抛出该异常。
public class Test implements Runnable {
Thread thread;
public Test() throws Exception {
thread = new Thread(this);
thread.setName(getClass().getName() + thread.getId());
thread.start();
}
public void run() {
System.out.println("start");
try {
while (true) {
Thread.sleep(Long.MAX_VALUE);
}
} catch (InterruptedException ie) {
System.out.println("interrupted");
}
System.out.println("stop");
}
public void stop() {
thread.interrupt();
}
public static void main(String [] args) throws Exception{
Test t = new Test();
t.stop();
}
}