JAVA多线程实现简单的点名系统
效果图如下:

CMain函数:
package com.shubing.main; public class CMain
{
public static void main(String[] args)
{
MainFrame mainFrame = new MainFrame();
mainFrame.setVisible(true);
}
}
MainFrame函数:
package com.shubing.main; import java.awt.*;
import java.awt.event.*;
import javax.swing.*; public class MainFrame extends JFrame implements ActionListener
{
public static boolean flag = false;
public JButton enter = new JButton("确定");
public JButton exit = new JButton("退出");
public JLabel text = new JLabel("点名");
public JLabel name = new JLabel("姓名");
public String[] nameList = {"王一","刘二","赵三","周四","马五","龙六","张七","贾八","钟九"};
public JLabel message = new JLabel("学生总数:"+nameList.length);
public EnterThread mainThread = null;
public MainFrame()
{
this.setTitle("点名系统");
this.setSize(,);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setLayout(null); //布局为空;
this.setFocusable(false); text.setBounds(, , , );
name.setBounds(, , , );
enter.setBounds(, , , );
exit.setBounds(, , , );
message.setBounds(, , , ); this.add(text);
this.add(name);
this.add(enter);
this.add(exit);
this.add(message); enter.setEnabled(true);
exit.setEnabled(false); Font font = new Font("华文行楷",Font.BOLD,);
this.text.setFont(font);
this.name.setFont(font); enter.addActionListener(this);
exit.addActionListener(this);
} @Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == enter)
{
mainThread = new EnterThread(this);
mainThread.start();
enter.setEnabled(false);
exit.setEnabled(true);
}
if(e.getSource() == exit)
{
new ExitThread(this).start();
exit.setEnabled(false);
} } }
EnterThread函数:
package com.shubing.main; public class EnterThread extends Thread
{
private MainFrame mainFrame = null;
private boolean isStop = true;
public int time = ; public EnterThread(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
}
public void stopThread()
{
this.isStop = false;
}
public void run()
{
try
{
int index = ;
while(isStop)
{
if(index == this.mainFrame.nameList.length)
{
index = ;
}
this.mainFrame.name.setText(mainFrame.nameList[index]);
index ++; Thread.sleep(time);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
this.mainFrame.enter.setEnabled(true);
}
}
ExitThread函数:
package com.shubing.main; public class ExitThread extends Thread
{
private MainFrame mainFrame = null; public ExitThread(MainFrame mainFrame)
{
this.mainFrame = mainFrame;
} public void run()
{
try
{
for(int i=;i<=;i+=)
{
this.mainFrame.mainThread.time += i;
sleep();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
mainFrame.mainThread.stopThread();
}
}
JAVA多线程实现简单的点名系统的更多相关文章
- Java 多线程安全问题简单切入详细解析
线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...
- Java多线程——<三>简单的线程执行:Executor
一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...
- Java多线程实现简单的售票程序
设计一个多线程程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1.要求打印出每个售票点所卖出的票号 2.各售票点 ...
- java多线程的简单demo
模拟场景:顾客买车从车库中取车,厂家生产车,车存储在车库中.买家.厂家对同一个车库中的车操作 一.不加同步机制的代码如下: package com.joysuch.testng.thread; imp ...
- Java多线程之简单的线程同步实例
数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEve ...
- java多线程实现简单队列
1.创建Queue.java public class Queue { private LinkedList<Object> list = new LinkedList<Object ...
- Java多线程学习(一)Java多线程入门
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79640870 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
- Java多线程——<八>多线程其他概念
一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...
- java多线程那点事
屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ...
随机推荐
- pip error: command 'gcc' failed with exit status 1
SWIG/_m2crypto_wrap.c:127:20: 致命错误:Python.h:没有那个文件或目录 #include <Python.h> ...
- Mysql之二
MySQL的数据类型 SQL接口 标准: ANSI SQL:SQL-86--------SQL-89--------SQL-99---------SQL-03 数据类型 字符型: CHAR(不区分字母 ...
- ASP.NET- 执行SQL超时的解决方案
在我们编写程序的时候,有时候要进行复杂的查询时,就会出现执行sql时间过长,引起页面执行不了并提示执行脚本超时,这就是我们遇到超时异常. 超时异常分两种情况:一种,是连接超时:一种,是执行超时.前者, ...
- 教你50招提升ASP.NET性能(九):显式的使用using语句减少内存泄露
(15)Reduce memory leaks dramatically with the “using” statement 招数15: 显式的使用using语句减少内存泄露 If a type i ...
- ThinkPHP CURD方法盘点:data方法
data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法. 用法 写操作 通常情况下我们都是通过create方法或者赋值 ...
- ThinkPHP函数详解:C方法
C方法是ThinkPHP用于设置.获取,以及保存配置参数的方法,使用频率较高.了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的.ThinkPHP的配置文件采用PH ...
- Android 如何修改默认的searchable items。
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 配置Ubuntu开发环境
前言 新买了一台ThinkPad E431,主要看中了硬盘500G和7200转/分钟的速度,因此准备从x220上把工作环境迁移到新买的笔记本上. 为什么不要公司的电脑,是由于160G的ssd硬盘实在是 ...
- nginx,linux压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 1. wget htt ...
- android判断当前应用程序处于前台还是后台
/** *判断当前应用程序处于前台还是后台 * * @param context * @return */ public static boolean ...