簡體   English   中英

Java - 如何使用 Executor Service 同時運行兩個 static 和 void 函數

[英]Java - How to simultaneously run two static and void functions with Executor Service

我試圖讓我的程序准備好發送用戶輸入的消息並同時收聽傳入的消息。

我嘗試使用執行器服務,但它總是給出一個錯誤,說函數不能是 static 或無效。

因此,我嘗試使我的兩個函數(我需要同時運行)非靜態並返回一個我不會做任何事情的字符串。 不幸的是,我仍然收到一個錯誤,我認為這是因為我的函數使用了之前聲明的 static class 變量。

這是我得到的錯誤:

EchoClient.java:66: 錯誤:<anonymous EchoClient$1> 不是抽象的,並且不會覆蓋 Callable 中的抽象方法 call() callables.add(new Callable() {

這是我簡化的代碼,沒有執行器服務:

class EchoClient
{   
    public static DatagramSocket socket; public static InetAddress receiver; public static int port;
    
    public static void main( String args[] ) throws Exception
    {
        //Initialization of socket, receiver and port
        
        while(true)
        {
            sendMessage();
            receiveMessage();
        }
        
    }

    public static void sendMessage() throws IOException
    {
        //Actions to send message
    }
    
    public static void receiveMessage() throws IOException
    {
        //Actions to receive message
    }
    
}

我想同時運行的功能是sendMessage()receiveMessage() 現在我正在使用一個while循環,所以程序只能在等待接收之前發送一條消息,反之亦然。

我對 Java 真的不是很熟悉,所以我只是希望執行器服務的簡單實現。

由於您知道您將需要 2 個線程,因此您可以使用 FixedThreadPool:

Executor executor = Executors.newFixedThreadPool(numberOfThreads);

要執行任務,您只需要使用您的可運行對象作為參數調用執行方法:

executor.execute(() -> {
    while (true) {
        try {
            sendMessage();
        } catch (IOException e) {
            e.printStackTrace();
            break;
        }
    }
});

暫無
暫無

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

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