在UI中处理多线程

时间:2019-05-20 15:07:02

标签: java multithreading sockets user-interface

我实际上是在Java程序中使用套接字侦听器。 这个想法是让我的程序运行到捕获外部事件为止。一旦发现,我就必须更新布局。

为了让我的应用程序在特定端口上侦听时运行,我做了如下操作:

// new thread allows me to let my program continue
new Thread() {
    public void run() {
        try {
            while (true) {
                try (ServerSocket listener = new ServerSocket(59090)) {
                    System.out.println("The server is running...");
                    // listening
                    while (true) {
                        try (Socket socket = listener.accept()) {
                            // catches event
                            System.out.println("event caught");
                            InputStream raw = socket.getInputStream();
                            headerData = getHeaders(raw);
                            // some code
                            // ...
                            // ...

                            // Update UI
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}.start();

这个想法是,我会不断监听59090端口,并在使用该端口后立即执行我的特定代码。

现在的问题是当我赶上一个事件时。 如果我不在“主”线程中,似乎无法在UI上执行操作。我对吗 ? 是否可以向我的“主线程”发送信息以告诉它更新UI?否则可以将我的主线程“切换”到该线程吗?

编辑:

我已经看到在Android中可以使用AsyncTask,并且onPostExecute()方法允许将信息发送到UI线程。

onPostExecute(Result),在后台计算完成后在UI线程上调用。后台计算的结果作为参数传递到此步骤。

Java是否有等效功能?

谢谢

0 个答案:

没有答案