我一直在研究Java中的线程,这是我尝试运行2个不同的线程来输出1-30的偶数,以及1-30的奇数,每个都在一个不同的线程。我不确定我是否做错了什么,我希望你能借给我一些帮助。
public class evenThread implements Runnable{
public static void run(){
System.out.println("Even Numbers: ")
for(int j = 2; j <= 30; j + 2){
System.out.println(", " & j);
}
}
}
public class oddThread implements Runnable{
public static void run(){
System.out.println("Odd Numbers: ")
for(int i = 1; i <= 30; i + 2){
System.out.print(", " & i);
}
}
}
public static void main(String args[]){
evenThread t1 = new evenThread();
oddThread t2 = new oddThread();
t1.start();
t2.start();
}
}
答案 0 :(得分:2)
这里是您需要使用的runnables:
Thread whatever=new Thread(new evenThread());
Thread whatever2=new Thread(new oddThread());
或使用extends Thread而不是implements runnable
在runnable上没有start方法你可以知道这个,因为implements不会添加代码它只是告诉你在你的代码中有一个方法的其他东西,所以他们可以调用那个方法。
答案 1 :(得分:1)
我不知道你是如何编译它的,因为run方法不应该是静态的,因为你假设第二次调用实例方法oddThread
和evenThread
类应该在单独的java文件中或应该是Main的内部类(目前你甚至没有)和main引用的内部类也应该标记为static。我已修复您的代码,因为您可以检查差异,例如: +符号用于连接字符串
public class Main {
public static void main(String args[]) {
Thread t1 = new Thread(new evenThread());
Thread t2 = new Thread(new oddThread());
t1.start();
t2.start();
}
public static class evenThread implements Runnable {
public void run(){
System.out.println("Even Numbers: ");
for(int j = 2; j <= 30; j = j + 2){
System.out.print(", " + j);
}
}
}
public static class oddThread implements Runnable {
public void run(){
System.out.println("Odd Numbers: ");
for(int i = 1; i <= 30; i = i + 2){
System.out.print(", " + i);
}
}
}
}
答案 2 :(得分:0)
evenThread和oddThread实现了Runnable。
要获得可开始的线程,您必须将它们包装在线程
中Runnable even = new evenThread();
Thread t1 = new Thread(even);
t1.start();
无法在Java中单独启动Runnables。
哦,而且很简单,run-Method不能是静态的。