我正在尝试学习Java的线程以进行分配,但我不明白如何让每个线程都能做自己的代码。我也得到一个错误:
Program.java:1: error: Program is not abstract and does not override abstract me
thod run() in Runnable
public class Program implements Runnable {
^
1 error
因为作业需要它,我必须在同一个文件中做所有事情,所以我尝试了下面的代码:
public class Program implements Runnable {
Thread thread1 = new Thread () {
public void run () {
System.out.println("test1");
}
};
Thread thread2 = new Thread () {
public void run () {
System.out.println("test2");
}
};
public void main (String[] args) {
thread1.start();
thread2.start();
}
}
你可以帮我解决一下,并展示如何让2个线程相互执行不同的任务吗?我已经看过打印线程名称的例子,但我没有发现它们有用。 谢谢。
答案 0 :(得分:3)
您的Program
类定义为实现Runnable
接口。因此,它必须覆盖并实现run()
方法:
public void run () {
}
由于您的两个Thread
对象使用的是匿名内部 Runnable
类,因此您不需要,并且应该从implements Runnable
删除Program
} class definition。
public class Program {
...
答案 1 :(得分:0)
试试这个:
class Program {
public static void main(String[] args) {
Thread thread1 = new Thread() {
@Override
public void run() {
System.out.println("test1");
}
};
Thread thread2 = new Thread() {
@Override
public void run() {
System.out.println("test2");
}
};
thread1.start();
thread2.start();
}
或者您可以创建一个单独的类来实现Runnable
和ovverriding方法run()
。
然后在main
方法中创建一个Thread
的实例,并将您的类对象作为参数:
class SomeClass implements Runnable {
@Override
run(){
...
}
}
并在主要:
Thread thread = new Thread(new SomeClass());
答案 2 :(得分:0)
当您implement
interface
(例如Runnable
)时,必须实施其方法,在这种情况下run
。
否则,您的应用程序要编译并运行,只需从您的类声明中删除implements Runnable
:
public class Program {
public void main (String[] args) {
Thread thread1 = new Thread () {
public void run () {
System.out.println("test1");
}
};
Thread thread2 = new Thread () {
public void run () {
System.out.println("test2");
}
};
thread1.start();
thread2.start();
}
}