想知道我在Java Thread Program上做错了什么?

时间:2014-12-10 00:17:23

标签: java multithreading

我一直在研究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();
    }
}

3 个答案:

答案 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方法不应该是静态的,因为你假设第二次调用实例方法oddThreadevenThread类应该在单独的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不能是静态的。