簡體   English   中英

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

[英]Wondering what I did wrong on my Java Thread Program?

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

這是您需要使用的可運行對象:

Thread whatever=new Thread(new  evenThread());
Thread whatever2=new Thread(new  oddThread());

或使用擴展線程而不是可運行的工具

在runnable上沒有start方法,您可以知道,因為實現器從來不添加代碼,它只是告知其他內容您將在您的代碼中擁有一個方法,以便他們可以調用該方法。

我不知道您是如何編譯它的,因為運行方法應該不是靜態的,因為您假設第二次調用實例方法, oddThreadevenThread類應該在單獨的java文件中,或者應該是Main的內部類(當前您不知道)甚至有),並且從main引用的內部類也應標記為靜態。 我已修復您的代碼,如下所示,您可以檢查差異,例如用於連接字符串的+號

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);
            }
        }
    }
}

evenThread和奇數線程實現Runnable。

要獲得可啟動的線程,您必須將它們包裝在線程中

Runnable even = new evenThread();
Thread t1 = new Thread(even);

t1.start();

不可能在Java中單獨啟動Runnables。

當然,運行方法一定不能是靜態的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM