效果图如下:

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多线程实现简单的点名系统的更多相关文章

  1. Java 多线程安全问题简单切入详细解析

    线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...

  2. Java多线程——<三>简单的线程执行:Executor

    一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...

  3. Java多线程实现简单的售票程序

    设计一个多线程程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1.要求打印出每个售票点所卖出的票号 2.各售票点 ...

  4. java多线程的简单demo

    模拟场景:顾客买车从车库中取车,厂家生产车,车存储在车库中.买家.厂家对同一个车库中的车操作 一.不加同步机制的代码如下: package com.joysuch.testng.thread; imp ...

  5. Java多线程之简单的线程同步实例

    数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEve ...

  6. java多线程实现简单队列

    1.创建Queue.java public class Queue { private LinkedList<Object> list = new LinkedList<Object ...

  7. Java多线程学习(一)Java多线程入门

    转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79640870 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...

  8. Java多线程——<八>多线程其他概念

    一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...

  9. java多线程那点事

    屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ...

随机推荐

  1. pip error: command 'gcc' failed with exit status 1

    SWIG/_m2crypto_wrap.c:127:20: 致命错误:Python.h:没有那个文件或目录     #include <Python.h>                  ...

  2. Mysql之二

    MySQL的数据类型 SQL接口 标准: ANSI SQL:SQL-86--------SQL-89--------SQL-99---------SQL-03 数据类型 字符型: CHAR(不区分字母 ...

  3. ASP.NET- 执行SQL超时的解决方案

    在我们编写程序的时候,有时候要进行复杂的查询时,就会出现执行sql时间过长,引起页面执行不了并提示执行脚本超时,这就是我们遇到超时异常. 超时异常分两种情况:一种,是连接超时:一种,是执行超时.前者, ...

  4. 教你50招提升ASP.NET性能(九):显式的使用using语句减少内存泄露

    (15)Reduce memory leaks dramatically with the “using” statement 招数15: 显式的使用using语句减少内存泄露 If a type i ...

  5. ThinkPHP CURD方法盘点:data方法

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法. 用法 写操作 通常情况下我们都是通过create方法或者赋值 ...

  6. ThinkPHP函数详解:C方法

    C方法是ThinkPHP用于设置.获取,以及保存配置参数的方法,使用频率较高.了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的.ThinkPHP的配置文件采用PH ...

  7. Android 如何修改默认的searchable items。

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  8. 配置Ubuntu开发环境

    前言 新买了一台ThinkPad E431,主要看中了硬盘500G和7200转/分钟的速度,因此准备从x220上把工作环境迁移到新买的笔记本上. 为什么不要公司的电脑,是由于160G的ssd硬盘实在是 ...

  9. nginx,linux压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 1. wget htt ...

  10. android判断当前应用程序处于前台还是后台

    /**     *判断当前应用程序处于前台还是后台     *      * @param context * @return         */    public static boolean ...