一个多线程应用举例 : 优化界面交互
2010-11-05 17:38
225 查看
例 1 : 在不使用多线程时,程序只有一个主线程,程序顺序执行,在计算过程中,窗口无法相应,不能关闭窗口。
例 2 : 使用多线程优化后的程序,开辟一个新的线程 专门负责计算,主程序线程控制交互,在计算过程中同样可以关闭窗口。
/** * @(#)ThreadPerformed.java * * * @author * @version 1.00 2010/4/26 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ThreadPerformed extends JFrame implements ActionListener{ JButton jbOk=new JButton("确定"); double test; public ThreadPerformed() { this.setTitle("多线程优化界面的显示"); this.setBounds(200,300,350,200); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jbOk.setMargin(new Insets(0,0,0,0)); this.add(jbOk,BorderLayout.NORTH); jbOk.addActionListener(this); } public void actionPerformed(ActionEvent e){ // 没有利用多线程点击完确定按钮后,界面由于进行运算而卡住不能响应,当运算结束才能进行关闭操作 for (long i=0;i<100000;i++){// 循环计算并输出一个数 test=test+Math.random()*Math.PI; System.out.println(test); } } public static void main (String[] args) { new ThreadPerformed(); } }
例 2 : 使用多线程优化后的程序,开辟一个新的线程 专门负责计算,主程序线程控制交互,在计算过程中同样可以关闭窗口。
/** * @(#)ThreadPerformed2.java * * * @author * @version 1.00 2010/4/26 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ThreadPerformed2 extends JFrame implements ActionListener{ JButton jbOk=new JButton("确定"); double test; public ThreadPerformed() { this.setTitle("多线程优化界面的显示"); this.setBounds(200,300,350,200); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jbOk.setMargin(new Insets(0,0,0,0)); this.add(jbOk,BorderLayout.NORTH); jbOk.addActionListener(this); } public void actionPerformed(ActionEvent e){ MyTread tt=new MyTread(); tt.start(); /* 没有利用多线程点击完确定按钮后,界面由于进行运算而卡住不能响应, for (long i=0;i<100000;i++){// 循环计算并输出一个数 test=test+Math.random()*Math.PI; System.out.println(test); } */ } public static void main (String[] args) { new ThreadPerformed2(); } } //开辟一个单独的线程,负责复杂计算,点击完确定按钮后,界面立刻就响应,计算在后台进行 class MyTread extends Thread { double test; public void run(){ for(long i=0;i<100000;i++) { //循环计算并输出一个数 test=test+Math.random()*Math.PI; System.out.println(test); } } }
相关文章推荐
- Android进阶——Handler的实际应用与多线程和界面的四种交互方式
- android多线程与界面交互以及runOnUiThread简单应用
- 一个C/S结构的优秀例子: 延迟补偿在C/S架构游戏协议设计和优化中的应用
- 几种典型的 iOS & Android 应用界面的交互框架各自的优缺点 -- 知乎 + Navigation Drawer
- 用WebBrowser实现HTML界面的应用和交互
- [Android]如何做一个崩溃率少于千分之三噶应用app(11)-Gradle组件化优化
- 几种典型的 iOS 应用界面的交互框架各自的优缺点是什么?
- java 的简单应用--设计一个简单的变色登录界面
- 几种典型的 iOS 应用界面的交互框架各自的优缺点
- 大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
- 使用react-native做一个简单的应用-03欢迎界面
- 当web应用中面临大数据量同时并发量比较大的情况下性能是一个尤为重要的问题,面对性能优化我们应从何做起,在哪些方面做优化呢?
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- 命令行界面的C/S聊天室应用 (Socket多线程实现)
- 微信抢红包应用要哭了,让我们来给微信红包设计一个新交互
- 应用:九宫格界面(优化)
- 【交互设计】手机应用界面设计欣赏
- 大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
- 2015年3月26日 - Javascript MVC 框架DerbyJS DerbyJS 是一个 MVC 框架,帮助编写实时,交互的应用。
- java,web应用中,关于多用户访问,是不是就是一个用户等于一个线程? 50 那一般的时候是多用户多线程还是多用户单线程。 6S根本停不下来 | 浏览 2065 次 我有更好的答案 发布于2016-