代码之家  ›  专栏  ›  技术社区  ›  Mr Cherno

Java中在同一线程上运行的多个类

  •  -1
  • Mr Cherno  · 技术社区  · 11 年前

    我有一个类,让我们称之为“Class1”,它实现了Runnable,并使用thread.start()启动一个名为“thread 1”的线程;

    我有另一个类,它是Class1的一个子类,叫做“Class2”。它包含主方法,并在执行while循环的类中运行另一个方法。然而,我注意到,在Class2中执行while循环的线程不是“线程1”,而是一个完全不同的线程。

    有没有办法让Class2 while循环在“线程1”上执行,而不是在它自己的线程上执行?如果我说得太含糊,请告诉我谢谢你的帮助。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Gray droiddeveloper    11 年前

    我在您对代码的描述中看到了几个问题:

    • 你应该把你的主类分开,不要让它在子类中 Class2 。称之为 Main 不要混淆。
    • 永远不应该在对象构造函数中启动线程。这是一个非常糟糕的模式,因为 this 可以在新线程完全初始化之前由其访问。我想主线程正在调用 new Class1() new Class2() 。让主线程也启动线程。

      Thread thread1 = new Thread(new Class1());
      thread1.start();
      Thread thread2 = new Thread(new Class2());
      thread2.start();
      
    • 线程无法在上运行 Class1 访问子类方法。如果你开始 new Thread(new Class1()) 线程在中甚至看不到任何方法 类别2 .

    也许我不明白你在说什么。发布一些小代码示例,以便我们能够更好地解决您的问题。