JAVA多线程程序ProgressBar2
JAVA多线程程序ProgressBar2
题目简介:

思路分析:与上一篇:JAVA多线程程序ProgressBar类似,本篇避免过于冗杂,所以在此没有给出。
实验代码:
import java.awt.EventQueue; import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JPanel;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.activation.ActivationInstantiator; import javax.swing.JTextArea;
import javax.swing.JProgressBar;
import java.awt.Font;
import javax.swing.JButton; /**
* @author 李祖林
*
*/
public class SumFrame implements ActionListener{ private JFrame frame;
JTextArea textA,textB;
JButton button;
JProgressBar progressBar; public static void main(String[] args) {
SumFrame sumFrame = new SumFrame();
} public SumFrame() { frame = new JFrame();
frame.setBounds(100, 100, 1043, 210);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0)); JLabel label = new JLabel("\u591A\u7EBF\u7A0B 20\u4E2A\u968F\u673A\u6574\u6570\u7684\u548C");
label.setFont(new Font("宋体", Font.BOLD, 18));
label.setHorizontalAlignment(SwingConstants.CENTER);
frame.getContentPane().add(label, BorderLayout.NORTH); JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new GridLayout(3, 2, 0, 0)); JLabel label_1 = new JLabel("\u8BA1\u7B97\u7B49\u5F0F\r\n");
label_1.setFont(new Font("宋体", Font.BOLD, 18));
label_1.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label_1); textA = new JTextArea();
textA.setFont(new Font("Courier New", Font.BOLD, 10));
panel.add(textA); JLabel label_2 = new JLabel("\u8FDB\u5EA6\u6761");
label_2.setFont(new Font("宋体", Font.BOLD, 18));
label_2.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label_2); progressBar = new JProgressBar();
progressBar.setMaximum(20);
panel.add(progressBar); JLabel label_3 = new JLabel("\u8BA1\u7B97\u7ED3\u679C");
label_3.setFont(new Font("宋体", Font.BOLD, 18));
label_3.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label_3); textB = new JTextArea();
textB.setFont(new Font("Courier New", Font.BOLD, 15));
panel.add(textB); JPanel panel_1 = new JPanel();
frame.getContentPane().add(panel_1, BorderLayout.SOUTH); button = new JButton("\u5F00\u59CB");
button.setFont(new Font("宋体", Font.BOLD, 18));
panel_1.add(button);button.addActionListener(this); frame.setVisible(true);
} public void actionPerformed(ActionEvent e) {
SumThread sumThread = new SumThread(); ReadThread readThread = new ReadThread(this);
Thread thread = new Thread(readThread);
thread.start();
} }
SumFrame
/**
* @author 李祖林
*
*/
public class ReadThread extends Thread {
SumFrame sumFrame; ReadThread(){}
ReadThread(SumFrame sumFrame){
this.sumFrame = sumFrame;
} public void run(){
while(true){
sumFrame.textA.setText(SumThread.string);
sumFrame.progressBar.setValue(SumThread.n);
sumFrame.textB.setText(String.valueOf(SumThread.sum));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.err.println("读取线程ReadThread发生错误!");
e.printStackTrace();
}
}
}
}
ReadThread
/**
* @author 李祖林
*
*/
public class SumThread extends Thread{
static double sum = 0;
static int n = 0;
static String string = "sum = 0;\nsum = 0";
int tmp; SumThread(){
Thread thread = new Thread(this);
thread.start();
} public void run(){
while(n<20){
n++;
tmp = (int)(Math.random()*1000);
sum += tmp;
string = string + "+" + tmp;
try {
Thread.sleep((int)Math.random()*600 + 300);
} catch (InterruptedException e) {
System.err.println("计算线程发生错误!");
e.printStackTrace();
}
}
}
}
SumThread
实验结果:

JAVA多线程程序ProgressBar2的更多相关文章
- JAVA多线程程序ProgressBar
		JAVA多线程程序ProgressBar 题目简介: 思维导图: 实验代码:建议先看CalThread类,计算线程的实现,再作基本CalFrame类的界面, 然后作ReadThread类,结合CalF ... 
- Java多线程程序休眠、暂停与停止
		休眠 在Java多线程中,可以使用sleep()方法在指定毫秒数内让当前正在执行的线程休眠. 下面这段代码,使得主函数的main线程休眠了2000ms,最后输出的间隔时间也是2000ms. p ... 
- Java多线程-程序运行堆栈分析
		class文件内容 class文件包含JAVA程序执行的字节码:数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符:文件开头有一个0xcafebabe(16进制)特殊的一个标志. ... 
- (转载)Java多线程的监控分析工具(VisualVM)
		原文链接:http://blog.csdn.net/chendc201/article/details/22905511 在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的 ... 
- [转载] java多线程学习-java.util.concurrent详解(一) Latch/Barrier
		转载自http://janeky.iteye.com/blog/769965 Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent, 提供了大量高级工具,可 ... 
- Java多线程异常处理
		在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Run ... 
- 【java多线程系列】java内存模型与指令重排序
		在多线程编程中,需要处理两个最核心的问题,线程之间如何通信及线程之间如何同步,线程之间通信指的是线程之间通过何种机制交换信息,同步指的是如何控制不同线程之间操作发生的相对顺序.很多读者可能会说这还不简 ... 
- Java多线程概念简介 多线程中篇(一)
		Java的线程与操作系统的线程 在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ... 
- 关于java多线程中异常捕获的理解
		在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ... 
随机推荐
- 从n个数里面找最大的两个数理论最少需要比较
			答案是:n+logn-2 过程是这样的: 甲乙比甲胜出,丙丁比丙胜出,最后甲丙比较,甲胜出...容易得出找出最大数为n-1次. 现在开始找出第二大的数字:明显,第二大的数字,一定和甲进行过比较.... ... 
- less 分页显示文件内容
			1.命令功能 less 是more的增强版,可以分页显示文件内容,而且less打开文件的速度要比vi,more更快.less支持搜索功能,显示行号. 2.语法格式 less option file ... 
- 开源框架相关面试问题-okhttp网络框架面试问题详解
			OkHttp使用简介: ①.准备OkHttpClient对象: 一般app中使用网络可以全部用它,可以将它弄为全局变量,这样就可以共用它的缓存和线程池了. ②.准备Request对象: 很显然它是采用 ... 
- c++分布式服务框架teamtalk
			这是蘑菇街开发的内部通讯软件,记录一下.可以参考学习 https://github.com/meili/TeamTalk 
- Linux系统用户权限管理
			Linux系统中三种基本权限 用户属主.用户属组及其它人权限 -rw-r--r-- 1 root root 762 11-11 20:34 a.out 文件类型 ls命令中的缩写 应用 一般文件 - ... 
- DevExpress Blazor组件全新来袭!增强Data Grid、TreeView API
			点击获取DevExpress v19.1.7最新完整版试用下载 DevExpress UI for Blazor即将在最新的v19.1.8中可用,此次更新发布包括DevExpress Blazor组件 ... 
- mongodb为集合新增字段、删除字段、修改字段(转)
			新增字段 为atest集合新增一个字段content db.atest.update({},{$set:{content:""}},{multi:1}) 删除uname字段 db. ... 
- VS2015  注释英文
			在VS2015中,框架.NET4.5的智能提示是英文版本的,其实修改的方法很简单,手动改也十分方面,但是考虑到有时候更新后又会变成英文,其实无非就是里面的汉化包是英文版的而已.所以还是留个笔记,方便进 ... 
- HGOI 20191030am 题解
			Problem A 腿部挂件 给出$n$个数的序列$a_i$,支持$T$次操作. 每次操作形如$x , l , r$,计算$\max_{i = l}^{r} (a_i \oplus x)$的值. 对于 ... 
- Android_(自动化)自动获取手机电池的剩余电量
			自动获取手机电池的剩余电量 通过使用BroadcastReceiver的特性来获取手机电池的电量,注册BroadcastReceiver时设置的IntentFilter来获取系统发出的Intent.A ... 
