资源简介
创建3个线程,每个线程的工作是在自己的界面随机的显示26个字母中的一个;可通过界面按钮,临时挂起或回复各线程的运行。
代码片段和文件信息
package randomcharacter;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RandomCharacter extends Japplet implements ActionListener{
private String allchars = “ABCDEFGHIJKLMNOPQRSTUVWXYZ“;
private final static int SIZE = 3;
private JLabel []outputs;
private JCheckBox []checkBoxes;
private Thread []threads;
private boolean []suspended;
static int count = 0;
public void init(){
outputs = new JLabel[SIZE];
checkBoxes = new JCheckBox[SIZE];
threads = new Thread[SIZE];
suspended = new boolean[SIZE];
Container container = getContentPane();
container.setLayout(new GridLayout(SIZE255));
for(int count = 0;count outputs[count] = new JLabel();
outputs[count].setBackground(Color.GREEN);
outputs[count].setOpaque(true);
container.add(outputs[count]);
checkBoxes[count] = new JCheckBox(“线程挂起“);
checkBoxes[count].addActionListener(this);
container.add(checkBoxes[count]);
}
}
public void start(){
for(int count = 0;count threads[count] = new Thread(new Runnableobject()“线程“+(count+1));
threads[count].start();
}
}
private int getIndex(Thread current){
for(int count = 0;count if(current == threads[count]){
return count;
}
}
return -1;
}
public synchronized void stop(){
for(int count = 0;count threads[count] = null;
}
notifyAll();
}
public synchronized void actionPerformed(ActionEvent event){
for(int count = 0;count if(event.getSource()==checkBoxes[count]){
suspended[count] =!suspended[count];
outputs[count].setBackground(suspended[count]?Color.MAGENTA:Color.GREEN);
if(!suspended[count]){
notifyAll();
}
return;
}
}
}
private class Runnableobject implements Runnable{
public void run(){
final Thread currentThread = Thread.currentThread();
final int index = getIndex(currentThread);
System.err.println(“index=“+index+“thread=“+currentThread.getName());
while (threads[index] == currentThread){
try{
Thread.sleep((int)(Math.random()*1000));
synchronized (RandomCharacter.this){
while(suspended[index]&&threads[index]==currentThread){
RandomCharacter.this.wait();
}
}
}
catch (InterruptedException e){
e.printStackTrace();
}
SwingUtilities.invokeL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16763 2018-06-22 17:00 11.8(2)\20180622170012.png
文件 1546 2018-06-22 16:41 11.8(2)\RandomCharacter$Runnableob
文件 2262 2018-06-22 16:41 11.8(2)\RandomCharacter$Runnableob
文件 3543 2018-06-22 16:41 11.8(2)\RandomCharacter.class
文件 3430 2018-05-28 21:14 11.8(2)\RandomCharacter.java
文件 32768 2018-06-22 17:01 11.8(2)\Thumbs.db
文件 141 2018-06-22 16:41 11.8(2)\java.policy.ap
目录 0 2018-09-28 14:30 11.8(2)\
- 上一篇:心电信号预处理去噪
- 下一篇:三线程分别显示各自时间
相关资源
- 三线程分别显示各自时间
- IBM Rational 全套 License 破解 upd
- 九部前端工具库发现有价值的前端工
- 基于miniprogramwebpackloader的小程序脚手
- Draggable打造跨平台的轻量级原生JS拖拽
- 短小精悍的前端缓存插件解决前端缓
- 将一个vue文件编译成js文件的工具
- H5唤起原生APP
- 配合elementuiupload组件支持分片上传功
- 小程序图书馆预约管理项目
- VUE全家桶vue2vueroutervuexaxios
- 教务系统微信小程序
- 小程序云开发项目私房书柜
- luogu冬日画板自动绘图脚本使用TS重写
- 简单查单词小程序
- 微信小程序仿豆瓣电影豆瓣评分
- 一个解决threeJs模块化开发问题的web
- vue全家桶开发webapp音乐播放器
- WechatApp微信小程序wxapkg解包及相关文
- xchart是一个可拖拽放大缩小的数据可
- vue全家桶仿网易云音乐Demo
- CSS3奇思妙想单标签实现各类图形
- vue上传demo支持多选拖拽上传
- 微信小程序微租车
- 粒子群优化算法编码
- 学子商城项目.rar
- robocode智能坦克代码
- Qt 多线程实现动态波形图表
- 围棋人人对战
- Git教学视频详解
评论
共有 条评论