0

我对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.stop();

工作!

我想在另一个应用程序中找到并停止这个线程(绝对不一样)

我不熟悉Java,这种代码方式也不适用于C++或我所知道的其他方式。

我的代码有意义吗?没问题?我担心...

请给我提意见。非常感谢。

(我英语不好。对不起)

4

1 回答 1

-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();
    }
}
于 2013-10-15T06:22:23.987 回答