gpt4 book ai didi

java - Filedialog 正在杀死我的线程

转载 作者:行者123 更新时间:2023-12-02 00:48:04 27 4
gpt4 key购买 nike

我正在使用 Java 开发一个 socket 程序。我在后台运行带有套接字服务器的GUI套接字服务器正在运行一个线程,每 10 毫秒检查一次套接字消息。它们都运行良好,但是当我尝试在 gui 中打开文件对话框时,gui 崩溃,但服务器继续运行。我认为我以错误的方式运行服务器(或服务器线程)。如果我跳过套接字,文件对话框可以正常工作。

可能是什么问题,是否我以错误的方式运行线程?

(这是一个类)

public ServerController(){
ServSocket st = new ServSocket();
Thread thread1=new Thread(st);
thread1.start();
}

(这是我的主题)

public void run(){
while (true) {
try {
Thread.sleep(10);
}
catch (InterruptedException e) {}

switch (Status) {
case CONNECTED:
try {

socket = new Socket(hostIP, port);
System.out.println("Connected on: " + hostIP + port);

out = new PrintWriter(socket.getOutputStream(), true);
changeStatus(STARTSENDING, true);
}
catch (IOException e) {
System.out.println("disconnected");
}
break;

(这是我的主要内容)

 static ServerController scon;
static Controller cn;

public static void main(String[] args) {
scon = new ServerController();
cn = new Controller();
cn.gui();


}

最佳答案

只是猜测,但我认为这与 EDT 有关。

您是否尝试从 EDT 之外启动该对话框? http://en.wikipedia.org/wiki/Event_dispatching_thread

如果您认为可能,请尝试使用 SwingUtilities 静态方法(特别是 isEventDispatchThread 和 invokeLater)来磨练并纠正问题:

http://java.sun.com/javase/6/docs/api/javax/swing/SwingUtilities.html#isEventDispatchThread ()

http://java.sun.com/javase/6/docs/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable )

关于java - Filedialog 正在杀死我的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4366602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com