Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中在同一线程上运行的多个类_Java_Multithreading_Class_Sharing - Fatal编程技术网

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

Java中在同一线程上运行的多个类,java,multithreading,class,sharing,Java,Multithreading,Class,Sharing,我有一个类,我们称之为“Class1”,它实现了Runnable,并使用thread.start()启动了一个名为“thread1”的线程 我有另一个类,它是Class1的一个子类,叫做“Class2”。它包含main方法,并在类中运行另一个方法,该方法执行while循环。然而,我注意到,在类2中执行while循环的线程不是“线程1”,而是一个完全不同的线程 有没有办法让类2 while循环在“线程1”上执行,而不是在它自己的线程上执行?如果我太含糊,请告诉我。:)谢谢您的帮助。在您对代码的描述

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

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


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

在您对代码的描述中,我发现了几个问题:

  • 您应该分离出主类,而不是将其放在子类
    Class2
    中。称之为
    Main
    ,以免混淆
  • 永远不要在对象构造函数中启动线程。这是一种非常糟糕的模式,因为新线程在完全初始化之前可以访问此。我假设主线程正在调用
    newclass1()
    newclass2()
    。让主线程也启动线程

    Thread thread1 = new Thread(new Class1());
    thread1.start();
    Thread thread2 = new Thread(new Class2());
    thread2.start();
    
  • Class1
    上运行的线程无法访问子类方法。如果启动
    新线程(new Class1())
    该线程甚至在
    Class2
    中看不到任何方法


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

一个线程一次可以运行一个方法。如果您希望
while
循环在可运行线程中运行,请让该线程使用
while
循环调用该方法。请发布一些代码,也许我们可以为您提供更好的解决方案发布一些代码,否则您的问题可能会被解决。很难理解你在说什么。