我正在尝试从java.lang.Runnable实现Runnable的类的对象创建一个线程 但它不起作用。
piyush@piyush-Inspiron-5559:~/Desktop/java_prog$ javac Runnable.java
Runnable.java:27: error: no suitable constructor found for Thread(counter,String)
Thread td=new Thread(obj,"bac");
^
constructor Thread.Thread(Runnable,AccessControlContext) is not applicable
(argument mismatch; counter cannot be converted to Runnable)
constructor Thread.Thread(ThreadGroup,Runnable) is not applicable
(argument mismatch; counter cannot be converted to ThreadGroup)
constructor Thread.Thread(ThreadGroup,String) is not applicable
(argument mismatch; counter cannot be converted to ThreadGroup)
constructor Thread.Thread(Runnable,String) is not applicable
(argument mismatch; counter cannot be converted to Runnable)
Note: Some messages have been simplified; recompile with - Xdiags:verbose to get full output
1 error
这是错误。 代码如下.........
import java.io.*;
interface Runnable{
public void run();
}
class counter implements Runnable {
Thread t=Thread.currentThread();
private int x;
public counter(){x=0;}
public int getval(){return x;}
public void run()
{
try{
while(x<5){
System.out.println(t.getName()+ ":" + (x++));
Thread.sleep(250);
}
System.out.println("Exit from thread:"+t);}
catch(InterruptedException e){
System.out.println("InterruptedException");
}
}
}
class client {
public static void main(String args[])
{
counter obj=new counter();
Thread td=new Thread(obj,"bac");
td.start();
int val;
try{
do{
val=obj.getval();
System.out.println(td.getName()+ ":" + val);
val=6;
Thread.sleep(1000);
}while(val<5);
}
catch(InterruptedException e)
{
System.out.println("InterruptedException 2");
}
System.out.println("Exit from thread:"+td.getName());
}
}
我是否必须创建任何线程构造函数。? 或者我要从java.lang库访问Runnable类? 这里的问题是什么?
答案 0 :(得分:0)
我是否必须创建任何线程构造函数。?或者我要访问 java.lang库中的runnable类??这里的问题是什么?
您必须通过调用Thread
构造函数并提供java.lang.Thread
类型的对象来创建java.lang.Runnable
对象。
我建议您查看 Thread
类构造 here,以便您可以发现代码的问题。
java.lang.Thread
API中的构造函数还有其他风格(重载)可用于创建Thread
对象,但首先,您现在可以专注于Thread(Runnable target, String name)
理解它(那是你试图在代码中使用的东西)。
您的代码存在的问题是您正在尝试创建自己的Runnable
类型对象,然后将其传递给java.lang.Thread
的构造函数,因为您正面临Thread.Thread(Runnable,AccessControlContext)
不适用的错误。
为了解决问题,只需删除您的Runnable
接口定义并使用一个JDK,即java.lang.Runnable
。换句话说,java.lang.Thread
类包含java.lang.Runnable
接口的构造函数,而Thread
类不接受您的Runnable
对象。
另外,作为旁注,请记住您需要遵循java命名约定,即类名应该大写(例如class Counter
而不是class counter
)。
答案 1 :(得分:0)
app/WEB-INF/