在另一个线程里socket.accept,主窗口的线程也被阻塞
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){this.port=Integer.p...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.port=Integer.parseInt(this.jEditorPane1.getText().toString());
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Main.serverthread=new ServerThread(port);
setVisible(false);
Main.serverthread.s=Main.serverthread.server.accept();
serverthread();
}
}):
}
这是登陆窗口里的按钮事件,用于创建一个ServerSocket以及它的线程。
问题是,在进入accept阻塞后,我的主窗口没法关闭,也不能repaint(),主窗口上的gif也不动了。
是主线程也被阻塞了?为什么。 展开
this.port=Integer.parseInt(this.jEditorPane1.getText().toString());
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Main.serverthread=new ServerThread(port);
setVisible(false);
Main.serverthread.s=Main.serverthread.server.accept();
serverthread();
}
}):
}
这是登陆窗口里的按钮事件,用于创建一个ServerSocket以及它的线程。
问题是,在进入accept阻塞后,我的主窗口没法关闭,也不能repaint(),主窗口上的gif也不动了。
是主线程也被阻塞了?为什么。 展开
2个回答
展开全部
Main.serverthread.server.accept() 这个是不是在等待客户端连接?如果是,那就阻塞了
这种代码不能放在EventQueue中等待执行的,应该另起一个线程专门处理客户端的交互
这种代码不能放在EventQueue中等待执行的,应该另起一个线程专门处理客户端的交互
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
2013-12-22
展开全部
Main.serverthread.server.accept(); 和在主线程写有什么分别 。
追问
这是主窗口 类里的一个静态变量。这样也会阻塞主线程?
所以我是先另外声明一个socket,在阻塞完成之后,再对他赋值?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询