`
zhanghaidang
  • 浏览: 39356 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于一个多线程的码表问题

    博客分类:
  • J2EE
阅读更多

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

class MyThread extends Thread {
	private JLabel label;
	private long time;
	private long endtime;

	public MyThread(JLabel label, long time) {
		this.label = label;
		this.time = time;
	}

	public void init() {
		endtime = System.currentTimeMillis() + time;
	}

	@Override
	public void run() {		
		init();
		while (true) {
			long runtime = endtime - System.currentTimeMillis();
			time = runtime;
			if(runtime > 0){
				label.setText(formatTime(runtime));
			}else{
				label.setText("GAME OVER");
			}
			
			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	private String formatTime(long runtime) {
		int m = (int) (runtime / 1000 / 60);
		int s = (int) (runtime / 1000 % 60);
		int ss = (int) (runtime % 1000);
		return check(m) + ":" + check(s) + "." + check(ss);
	}

	private String check(int number) {
		return number > 9 ? "" + number : "0" + number;
	}
}

class ClockFrame extends JFrame {
	private JLabel label;
	private JButton button;
	private MyThread mt;
	private boolean bFlag = true;// 控制按钮的显示及线程的挂起恢复

	public ClockFrame() {
		label = new JLabel();
		label.setHorizontalAlignment(JLabel.CENTER);
		add(label, BorderLayout.CENTER);

		button = new JButton("暂停");
		add(button, BorderLayout.NORTH);
		setBounds(222, 222, 222, 222);
		setVisible(true);

		mt = new MyThread(label, 10000L);
		mt.start();

		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (bFlag) {
					button.setText("继续");
					mt.suspend();
				} else {
					button.setText("暂停");
					mt.init();
					mt.resume();
				}
				bFlag = !bFlag;
			}
		});

	}
}

public class ClockTest {
	public static void main(String[] args) {
		new ClockFrame();
	}
}

以上是一个多线程的码表程序,运行起来没有问题,但是用到了两个过时的方法,suspend,suspend,想请问如果用wait, notify这两个方法,应该怎么改这个程序,谢谢
1
1
分享到:
评论

相关推荐

    JVM指令码表.zip

    8. **多线程指令**:`monitorenter`和`monitorexit`用于实现synchronized块的锁进入和退出。 理解JVM指令码表有助于优化Java代码,因为了解底层的执行过程可以帮助开发者写出更高效、更安全的程序。例如,通过减少...

    Java利用ascii码表把汉字转换成拼音

    此外,对于多线程环境,需要注意线程安全问题。 总之,Java中将汉字转换为拼音涉及到对Unicode编码的理解、汉字拼音映射表的构建或利用第三方库。通过掌握这些知识点,我们可以编写出高效且准确的转换程序,满足...

    网际风接口接收数据VC2010

    标题“网际风接口接收数据VC2010...综上所述,"网际风接口接收数据VC2010"项目是一个使用C++和VC2010开发的,针对股票数据的网络接收和处理系统,涵盖了网络编程、数据解析、多线程以及可能的金融数据处理等多个方面。

    ADSL拨号错误代码表

    - **描述**:此错误表明系统试图打开一个已经处于打开状态的端口。 - **原因**:可能是RASPPPOE驱动程序未正确安装或配置。 - **解决方法**:重新安装或更新PPPoE驱动程序。 #### 错误代码605:无法设置端口信息 - ...

    计算机网络课程设计实验报告--QQ网络聊天室实现.pdf

    总结来说,这个实验报告详细阐述了如何使用Java构建一个简单的网络聊天室,涵盖了网络编程中的客户端-服务器模型、多线程通信、数据传输协议以及用户验证等多个关键知识点。通过这样的实践,学生能够深入理解计算机...

    s7200 数码管程序

    3. **段码控制**:每个数码管段对应一个输出,通过编程控制这些输出的开/关状态来组合出不同的字符。了解数码管的段码表是编程的基础,每个数字和字母都有特定的段码值。 4. **扫描与显示刷新**:为了实现动态显示...

    c语言实现数字雨.7z

    标题 "C语言实现数字雨" 暗示了一个编程项目,该项目使用C语言来创建一个模拟数字下落效果的程序,通常称为“数字雨”或“滚动数字”。这个概念常见于计算机图形学和游戏开发中,它展示了如何利用C语言的基础知识来...

    change_big_to_small.zip_Big!

    在更复杂的程序中,可能会使用字符串而不是单个字符,并可能涉及多线程或文件I/O操作。例如,处理大量文本数据时,可能需要读取文件内容,逐行进行大小写转换,然后将结果写入新文件。这通常涉及到`fopen`, `fgets`,...

    (完整)huffman编码的matlab实现.pdf

    【Huffman编码】是一种高效的无损数据压缩技术,它的核心思想是通过构建最优二叉树来为信源符号分配最短的二进制码字,从而...此外,MATLAB的实现还可以扩展到多线程或分布式计算环境,以处理大规模数据的编码任务。

    Windows Data Type

    - **CHAR**: 一个单字节字符类型,与ASCII码表相对应。 - **WCHAR**: 一个宽字符类型,通常用于表示Unicode字符,占用两个字节。 - **BYTE**: 一个无符号单字节整型。 - **SHORT**: 一个有符号的16位整型。 - *...

    计算机网络课程设计实验报告--QQ网络聊天室实现.docx

    综上所述,实现QQ网络聊天室涉及到网络编程基础、多线程管理、数据传输协议设计、用户验证以及GUI界面开发等多个方面的知识。这是一个综合性的项目,旨在让学生理解计算机网络在实际应用中的工作原理和开发流程。

    嵌入式源代码-远程抄表

    5. **实时操作系统(RTOS)**:嵌入式系统通常运行在有限的硬件资源上,因此可能会采用RTOS来管理任务调度、内存管理和多线程编程。 6. **电源管理**:在电池供电的设备上,电源管理是关键。源代码可能包括低功耗...

    Character-Server:发送一个随机的ASCII字符到任何连接的客户端

    5. **Java多线程**:为了能同时处理多个客户端的连接,服务器端可能采用了多线程技术,每个连接的处理都在一个新的线程中进行,确保了并发性能。Java的`Thread`类或者`ExecutorService`可以用来创建和管理线程。 6....

    统计字符串中汉字、字母、数字、英文标点、中文标点个数

    如果需要处理大量数据,还可以将此功能封装到一个类中,利用多线程或异步处理来提升性能。 标签"字符串统计"强调了这是字符串操作的一部分,对于开发者来说,理解如何高效地处理字符串是非常重要的技能,尤其是在...

    UCML问题汇总.docx

    一个用户的操作导致其他用户会话失效,可能涉及全局变量或会话管理策略,需要优化会话管理代码。 24. **UCML客户端服务器连接卡死**: 客户端连接服务器卡死,可能由于网络延迟、服务器负载过高或客户端代码中的...

    ffmpeg H264解码

    FFmpeg是一款强大的开源多媒体处理工具,它...在实践中,开发者可能还需要关注错误处理、内存管理、多线程解码等高级话题。理解这些概念有助于在实际项目中更好地利用FFmpeg进行H264解码,实现高效且稳定的视频处理。

    打字小游戏模仿打字通和字母掉落

    在本文中,我们将深入探讨如何使用C#编程语言来实现一个简易的打字小游戏,该游戏模仿了...在实际开发过程中,可能还需要考虑到多线程、错误处理、资源管理等方面,但这些基础元素已经足以构成一个基本的打字游戏框架。

    佳能相机SDK6.12,含有VC例子程序和文档

    同时,为了保证程序的稳定性和效率,开发者需要熟练掌握多线程编程,以处理相机与电脑之间的异步通信。 最后,"www.pudn.com.txt"可能是下载资源来源的记录,而"CDSDK612_Win"可能是一个包含SDK核心库、头文件、库...

    2021-2022计算机二级等级考试试题及答案No.15540.docx

    5. 多继承与接口:一个类只能有一个父类,但可以实现多个接口,这是面向对象编程中的特性,提供了灵活的设计模式。 6. 第一台电子计算机:世界上第一台电子计算机是美国制造的ENIAC,不是德国。 7. 数字输入掩码:...

    C语言做的黑客帝国数字雨..

    总的来说,C语言实现的黑客帝国数字雨程序是一个结合了随机数生成、屏幕输出控制、时间调度以及可能的多线程技术的综合性项目。通过这个项目,开发者不仅可以锻炼基本的C语言编程能力,还能深入理解计算机图形学和...

Global site tag (gtag.js) - Google Analytics