-3

无法在 Eclipse 中执行此操作。有什么特别的原因吗?eclipse 在启用执行选项之前会寻找任何特定的东西吗?如果执行下面的代码会产生什么结果?是“1”吗?

class A extends Thread {
    private int i;
    public void run(){i=1;}
    public static void main(String[] args) {
        A a = new A(); a.run();System.out.println(a.i);
    }
}

编辑:只是玩继承和线程。这里没有测试特定的线程功能。

4

2 回答 2

2

您所要做的就是将您的课程设为公开

public class A extends Thread {
    private int i;
    public void run(){i=1;}
    public static void main(String[] args) {
        A a = new A(); a.run();System.out.println(a.i);
    }
}
于 2013-04-01T13:41:36.913 回答
1

@Hussain 将您的课程公开是正确的,但我想我会为后代添加一些额外的信息。

  • 正如您的代码现在所代表的那样,您没有在另一个线程中运行您的代码。您可以extends Thread从代码中删除它,它仍然可以正常工作。您main只是run()直接调用该方法,而不是调用任何线程魔术。

  • 如果您确实希望您的代码在另一个线程中运行,那么您将需要添加a.start();以启动线程运行并a.join();等待它完成。在start()方法中,线程被分叉,run()方法被调用。

    A a = new A();
    // start the thread which calls run()
    a.start();
    // wait for the thread to finish
    a.join();
    System.out.println(a.i);
    
  • 最后,建议你implements Runnable和做相反extends Thread。所以你的代码看起来像:

    A a = new A();
    Thread thread = new Thread(a);
    // start the thread which calls run()
    thread.start();
    // wait for the thread to finish
    thread.join();
    System.out.println(a.i);
    
  • 如果您以前没有这样做过,我建议您阅读有关线程的教程

于 2013-04-01T13:52:39.663 回答