簡體   English   中英

Java和2個線程

[英]Java and 2 threads

我正在嘗試學習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個線程相互執行不同的任務嗎? 我已經看過打印線程名稱的例子,但我沒有發現它們有用。 謝謝。

您的Program類定義為實現Runnable接口。 因此它必須覆蓋並實現run()方法:

public void run () {
}

由於您的兩個Thread對象使用匿名內部 Runnable類,因此您不需要並且應該從Program類定義中刪除implements Runnable

public class Program {
   ...

嘗試這個:

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

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

暫無
暫無

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

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