Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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_Eclipse_Multithreading_Constructor - Fatal编程技术网

Java线程程序不工作

Java线程程序不工作,java,eclipse,multithreading,constructor,Java,Eclipse,Multithreading,Constructor,我编写了一个示例java线程程序,但它显示了如下错误 java.lang.Error:未解决的编译问题:构造函数线程(测试)未定义 显示测试类不是可运行类。我参考了很多网站,但没有得到解决方案,它显示了我所做的是正确的。我的java代码: public class ThreadDemo { public static void main(String args[]) { new Thread(new Test()).start(); } } Tes

我编写了一个示例java线程程序,但它显示了如下错误

java.lang.Error:未解决的编译问题:构造函数线程(测试)未定义

显示测试类不是可运行类。我参考了很多网站,但没有得到解决方案,它显示了我所做的是正确的。
我的java代码:

public class ThreadDemo {  
       public static void main(String args[]) {  
        new Thread(new Test()).start();
    }
}
Test.java
类文件实现了
Runnable
,位于
jar
文件中,我作为库包含在
eclipse
中的项目中。 这有什么问题吗?
Test.java

public class Test implements Runnable {  
       @Override public void run() {  
        Sysout("Test");
    }
}
测试类包含许多其他方法,这些方法使用项目中其他jar中的许多其他类,但run方法不调用其中的任何一个方法。这些因素有问题吗?

此线程演示程序与另一个类实现Runnable配合使用,该类实现仅包含带有sysout()的run()。但正如我所说的,我的测试类包含了许多方法,这些方法进一步引用了其他JAR,但直到现在它还没有在测试类的run()方法中被调用。当我使用新线程(newtest()).start()时;Eclipse显示非法参数或强制转换为可运行参数建议,但有错误。然后我把那个铸件放在上面,得到了上面的错误。运行使用任何类型JAR和变量的类的线程是否有任何问题


提前谢谢

您的类应该声明为实现
Runnable
,如下所示:

class Test implements Runnable { 
  @Override
  public void run() {
    ...
  }
}

您的类应该声明为实现
Runnable
,如下所示:

class Test implements Runnable { 
  @Override
  public void run() {
    ...
  }
}
构造函数需要(实现可运行接口的任何类)作为参数。此编译错误表明参数类未实现可运行接口。

如果你做了必要的事情,编译器不会抱怨

例如:

public class Test implements Runnable { // Will make this class Runnable
@override
public void run() { // Body of the thread
// work the thread needs to do
}
}
构造函数需要(实现可运行接口的任何类)作为参数。此编译错误表明参数类未实现可运行接口。

如果你做了必要的事情,编译器不会抱怨

例如:

public class Test implements Runnable { // Will make this class Runnable
@override
public void run() { // Body of the thread
// work the thread needs to do
}
}

查找存在测试类的第三方jar的编译级别以及您用于程序的编译目标。

查找存在测试类的第三方jar的编译级别以及您用于程序的编译目标。

因此,您的测试类应该如下所示

public Class Test implements Runnable{
@Override
public void run(){
     // TODO this auto generated code 
    }
}
因此,当您调用
start()
方法时,新线程将从
run()
方法开始执行

Another Approach:
您可以将线程类扩展为

 public Class Test extends Thread{
    @Override
    public void run(){
         // TODO this auto generated code 
        }
    }
但它通常不使用,因为在java中只能扩展一个类。因此,如果扩展Thread类,则不能扩展应用程序中的任何其他类

Yet Another Approach:
您还可以实现与第一种情况相同的可调用接口,其中可运行接口为

public Class Test implements Callable{
@Override
public long call(){
     // TODO this auto generated code 
     long a= 3.14xxxxxxxx;
     return a;  
    }
}
主要区别在于,在Runnable接口中,不能从run方法返回任何东西,即返回类型为void


在Callble接口中,
call方法可以返回值
,如上例(长a)`

所示

public Class Test implements Runnable{
@Override
public void run(){
     // TODO this auto generated code 
    }
}
因此,当您调用
start()
方法时,新线程将从
run()
方法开始执行

Another Approach:
您可以将线程类扩展为

 public Class Test extends Thread{
    @Override
    public void run(){
         // TODO this auto generated code 
        }
    }
但它通常不使用,因为在java中只能扩展一个类。因此,如果扩展Thread类,则不能扩展应用程序中的任何其他类

Yet Another Approach:
您还可以实现与第一种情况相同的可调用接口,其中可运行接口为

public Class Test implements Callable{
@Override
public long call(){
     // TODO this auto generated code 
     long a= 3.14xxxxxxxx;
     return a;  
    }
}
主要区别在于,在Runnable接口中,不能从run方法返回任何东西,即返回类型为void

在Callble接口中,
call方法可以返回值
,如上例所示(长a)`

要创建线程,您需要声明一个实现 可运行接口。该类然后实现run方法。一 然后可以分配类的实例,并将其作为参数传递 创建线程时,启动

在代码中,您需要这样一个类

然后你需要分配一个新的线程对象并启动它,你可以这样做

寻找更多细节

要创建线程,您需要声明一个实现 可运行接口。该类然后实现run方法。一 然后可以分配类的实例,并将其作为参数传递 创建线程时,启动

在代码中,您需要这样一个类

然后你需要分配一个新的线程对象并启动它,你可以这样做


查看更多详细信息

根据我的估计,上面列出的文件格式正确。这个问题可能是由于在jar文件的类路径中有另一个名为“Test.java”的文件引起的。这似乎不太可能,但我将列出的类放入了我的编译器中,它们可以正常工作,所以问题似乎一定在别处


重命名Test.java,看看是否还有问题。

据我估计,上面列出的文件格式正确。这个问题可能是由于在jar文件的类路径中有另一个名为“Test.java”的文件引起的。这似乎不太可能,但我将列出的类放入了我的编译器中,它们可以正常工作,所以问题似乎一定在别处


重命名Test.java,看看是否仍然存在问题。

您可以执行new Test().schedule(),而不是实例化新的线程对象;它将自己作为线程启动

您可以执行new Test().schedule(),而不是实例化新的线程对象;它将自己作为线程启动

你的导入是什么?线程构造函数需要一个可运行的对象。测试类是否为可运行类型?发布Test.java文件