不要阻塞GUI
通常我们在教程中看到添加一个按钮事件:
①:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//处理代码...
}
});
原来我也看过一些处理阻塞的方法:
②:
SwingUtilities.invokelater(new Runnable(){
public void run(){
//处理代码...
}
});
然后将上面的代码添加到①的位置。可能是我理解错了,这个方法感觉
和原来没有太大的差异。
2012-5-2编辑
后来学习多线程知道里invokeLater方法只是把run方法的代码放在事件分发线程中,者应同样会阻塞画面,正确的做法是再run方法中将耗时的逻辑新开一个线程处理,即方法③。
2012-5-2编辑完毕
下面是我从Swing hecks 这本书上学到的方法:
③:
Thread buttonThread; //全局变量。
//添加事件监听
button.addActionListener(new MyAction());
//编写内部类
class MyAction extends AbstractAction implements Runnable{
ActionEvent ev;
public void run(){
//事件处理代码
//...
buttonThread = null; //运行结束,释放资源
}
public void actionPerformed(ActionEvent e){
ev = e; //传入事件
//激活线程
if(null != buttonThread){
return;
}else{
buttonThread = new Thread(this);
buttonThread.start();//开启线程
}
}
}
个人感觉③方法效果显著。记录下来,备忘。
分享到:
相关推荐
5. **并发工具类:** java.util.concurrent包提供如Semaphore(信号量)、CyclicBarrier(回环栅栏)和CountDownLatch(计数下锁)等工具,帮助处理多线程问题。 **网络编程:** Java提供了丰富的API进行网络编程...
【标题】"一键登录,实现群聊、私聊功能的java聊天室"涉及的主要知识点包括Java编程语言、网络通信机制BIO(Blocking I/O)、图形用户界面GUI以及多线程编程。下面将对这些关键点进行详细介绍。 1. **Java编程语言*...
4. **多线程处理**:为了保证用户界面的响应性和屏幕共享的并行处理,多线程编程是必要的。Java的线程模型允许开发者创建和管理多个并发执行的任务,例如一个线程用于捕获和编码屏幕,另一个线程负责网络传输。 5. ...
3. **多线程与并发**:在网络编程中,多线程处理是常见的需求,比如一个服务器可能需要同时处理多个客户端的连接请求。Java的Thread类和Runnable接口提供了实现多线程的机制。 4. **高级网络API**:Java NIO(Non-...
Java QQ程序源码是一个基于Java语言开发的简易即时通讯应用,它主要展示了如何利用Java NIO(非阻塞I/O)技术和多线程技术来构建一个类似QQ的通信系统。这个项目对于学习和巩固Java基础知识,尤其是网络编程和并发...
总结,这个基于Java的简单即时通讯工具系统毕业设计项目,涵盖了Java编程、网络通信、多线程、用户界面设计、数据存储、安全策略等多个重要领域,是学习和实践Java技术的好案例。通过该项目,开发者不仅能提升编程...
3. **NIO(Non-blocking I/O)**:Netty内部大量使用了NIO,这是一种I/O模型,它允许一个线程处理多个连接,提高了系统在高并发场景下的效率。 综合以上信息,这款智能聊天系统利用Java Swing构建用户界面,通过...
5. **用户界面**:Java Swing和JavaFX可以用来创建用户友好的图形界面,使用户能够轻松地加入会议、启动摄像头、麦克风,以及进行其他操作。 6. **服务器端技术**:Java EE中的Servlet和JSP可以用于处理客户端请求...
API文档详细列出了这些特性的具体实现和用法,涵盖了诸如集合框架、网络编程、多线程、数据库连接(JDBC)、输入/输出(I/O)、反射、异常处理、国际化、安全、XML处理等多个领域。 在Java集合框架方面,JavaSE6.0...
3. **多线程**:为了处理多个并发连接,服务器端通常会使用多线程。每个客户端连接对应一个独立的处理线程,保证了服务的响应速度。 4. **消息协议**:项目可能定义了一套简单的消息协议,用于封装和解析数据,如...
2. **套接字(Sockets)与多线程**:在Java中,网络通信通常涉及多线程,因为服务器通常需要同时处理多个客户端请求。Java的Thread类和Runnable接口为实现并发提供了基础,而Socket和ServerSocket操作则在这些线程中...
JDK 1.6中的基础类库涵盖了I/O流、集合框架、多线程、网络编程等多个方面。例如,`java.io`包提供了用于读写文件、处理输入输出流的类;`java.util`包中的集合类如ArrayList、HashMap等,是日常编程的基础;`java....
Java标准库提供了大量的类和接口,覆盖了I/O、网络编程、集合框架、多线程、异常处理等多个领域。书中会通过实例展示如何使用这些类库,例如,使用InputStream和OutputStream进行文件操作,或者使用Socket进行网络...
综上所述,开发一个Java即时通讯软件涉及到诸多方面,包括用户管理、实时通信协议、多线程技术、数据安全以及用户体验等。理解并掌握这些技术,能够帮助开发者构建出稳定、高效的即时通讯解决方案。
- **多线程**:Java的多线程能力是构建视频会议系统的基础,用于处理并发用户请求和实时视频流传输。 - **Socket编程**:Java的Socket类提供了网络通信的基本接口,用于建立客户端与服务器之间的连接,实现数据的...
4. **多线程技术**:在即时通信软件中,通常需要同时处理接收和发送消息、用户登录、在线状态更新等多个任务,这就需要多线程技术来保证各个任务的并发执行。 5. **消息协议**:为了实现不同设备间的通信,需要定义...
客户端界面由Swing库构建,Swing是Java提供的一种轻量级的GUI框架,可以方便地创建丰富的图形用户界面,包括按钮、文本框、面板等组件,用于显示棋盘、处理用户交互。 Swing中的JFrame作为主窗口,可以添加各种组件...
JavaSE还包含了大量的标准库,如JDBC(Java Database Connectivity)用于数据库操作,Swing或JavaFX用于构建图形用户界面,以及XML处理API等。这些库为开发者提供了丰富的功能,简化了开发过程。 最后,笔记可能...
- 在聊天工具中,多线程技术至关重要,它使得程序可以同时处理多个任务,如接收新消息、发送消息以及用户交互。 - Java中的Thread类和Runnable接口是实现多线程的基础,通过创建并启动线程,可以实现并发执行。 4...
Java2,也被称为Java 2 Platform Standard Edition (J2SE),是Java...通过学习和实践,你可以掌握Java2中的多线程、集合框架、NIO、异常处理、反射、枚举、Swing GUI以及JVM的工作原理,从而成为一名熟练的Java开发者。