前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java线程的暂停与恢复

Java线程的暂停与恢复

作者头像
用户2965768
发布于 2019-03-20 02:42:41
发布于 2019-03-20 02:42:41
2.3K00
代码可运行
举报
文章被收录于专栏:wymwym
运行总次数:0
代码可运行

 Java以前的suspend和resume方法过时不建议使用。

那怎么办呢?

具体说起来比较复杂,需要暂停标志加synchronized+等待/唤醒

详见代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package defaul;


import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

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


public class ThreadSuspendframe extends JFrame{
	private JLabel label;//显示数字中的标签
	String[] numb = {"15180691681","13870225947","13870261079","12345671111","1397995240"};
	public ThreadSuspendframe(){
		setTitle("手机号抽奖");
		setBounds(200, 200, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		MyThread myThread = new MyThread();
		myThread.start();
		label = new JLabel("0");//实例化标签 初始化为0
		label.setHorizontalAlignment(SwingConstants.CENTER);//设置文字居中
		label.setFont(new Font("宋体", Font.BOLD, 42));//设置字体
		getContentPane().add(label, BorderLayout.CENTER);
		JButton jButton = new JButton("暂停");
		jButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String Btn = jButton.getText();
				if(Btn.equals("暂停"))
				{
					myThread.toSuspend();
					jButton.setText("继续");
				}else{
					myThread.toResume();
					jButton.setText("暂停");
				}
			}
		});
		getContentPane().add(jButton, BorderLayout.SOUTH);
		setVisible(true);
	}
	class MyThread extends Thread{
		
		private boolean suspend = false;
		
		public synchronized void toSuspend(){
			suspend = true;
		}
		
		public synchronized void toResume(){
			notify();//当前等待的线程继续执行
			suspend = false;
		}
		
		@Override
		public void run() {
			// TODO Auto-generated method stub
			while(true){
				
				synchronized (this) {
				while(suspend){
					try {
						wait();//让线程进入等待状态
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				}
				int randomNum = new Random().nextInt(numb.length);//获取数组随机索引
				String phone = numb[randomNum];
				label.setText(phone);
			}
		}
	}
	public static void main(String[] args) {
		new ThreadSuspendframe();
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年03月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 实现简易随机学生点名器(附源码)
最近找了一份教学生Java入门的‘差事’,刚刚讲了一些基础,为了引起大家学习兴趣,于是写了一个简单的点名器,awt因为很少涉及,所以找的网上的,分别写了List版本和数组版本,因为还没给学生讲解List,只学习数组,所以单独改造了一个数组版本的,因为考虑到通用型,采用读取任意位置的txt文本,只需要按照格式一行一行的写入学生就可以实现点名了,采用的Random实现伪随机。直接上代码,基本上都能看懂吧。
Lcry
2022/11/29
1.6K0
Java 实现简易随机学生点名器(附源码)
随机抽奖小程序_在线随机抽号小程序
本实例使用随机数字生成5位抽奖号码,并显示在窗体的5个文本框中。当用户单击”开始”按钮时,将启动一个线程对象为5个文本框生成随机数字。单击”抽奖”按钮时,线程对象停止运行,并且将准确的中奖号码显示在信息文本框中。
全栈程序员站长
2022/09/19
3.4K0
java swing一篇轻松学习(高考后可以自学)
是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。
红目香薰
2022/11/30
10.2K0
java swing一篇轻松学习(高考后可以自学)
学生信息管理系统 | Java程序设计
市场需求:主要解决一个管理学生信息的问题,学生学号,班级,成绩之类的问题,旨在为各大高校提供一个开源、自由、免费的简单管理软件。这个问题要求我们提供一个管理学生信息安全的平台,避免学生信息的缺漏。人性化的图形管理界面,加上优美的背景音乐和可爱的开场动画,让管理者可以更加愉悦得对学生信息进行管理。
Jean
2021/09/16
1.3K0
学生信息管理系统 | Java程序设计
java图书管理系统登录界面和验证
public class LibraryloginFrame extends JFrame{
明明如月学长
2021/08/27
9800
Java 常用动作事件监听
import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.
用户2965768
2019/03/05
1.6K0
脏读,不可重复读,幻读
在介绍脏读,不可重复读,幻读现象之前,我们先来了解MySQL的事务隔离级别,因为脏读,不可重复读,幻读等现象都是由数据库里的事务隔离级别来决定是否可能发生的。
端碗吹水
2020/09/23
1.8K0
脏读,不可重复读,幻读
java JAVA生成随机椭圆二一个以上widget的frame
 JAVA生成随机椭圆二一个以上widget的frame,内部类 package liezi; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TwoButtons { JFrame frame; JLabel label1; JLabel label2; public static void main(String[] args){ TwoButtons TwoButtons=new Two
葫芦
2019/05/09
4940
Java入门(12)-- Swing程序设计
GUI(图形用户界面)为程序提供图形界面,它最初的设计目的是为程序员构建一个通用的GUI,使其能够在所有的平台上运行,但Java1.0中基础类AWT(抽象窗口工具箱)并没有达到这个要求,于是Swing出现了,它是AWT组件的增强组件,但是它并不能完全替代AWT组件,这两种组件需要同时出现在一个图形用户界面中。
爱学习的程序媛
2022/04/07
5.8K0
Java入门(12)-- Swing程序设计
Swing组件概述
这个模式明确规定了三个对象如何进行交互。模型存储内容,它没有任何用户界面。对于一个按钮来说,内容非常简单-它只是一组标志,用来说明按钮是否按下,是否启用等等。对于一个文本框来说,内容稍稍复杂,它是容纳当前文本的一个字符串对象。这个内容和视图的内容并不一致------如果内容的长度大于文本框的显示长度,那么用户看到的就只有文本框显示的那一部分。模型必须实现改变和发现内容的方法。例如:一个文本模型中的方法有:在当前文本中添加或者删除字符以及把当前文本作为一个字符串返回等。再次强调,模型是完全不可见的,显示存储在模型中的数据是视图的工作。
张哥编程
2024/12/17
3960
Java 图形用户界面(GUI)开发:从 Swing 入门到实战项目
Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。
用户11690571
2025/06/10
710
java设计之简单的JAVA计算器
       做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........        先展示一下效果....额,当然不是这个样子....  
Gxjun
2018/03/26
2.3K0
java设计之简单的JAVA计算器
图书管理系统代码 6 AboutFrame (…
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
明明如月学长
2021/08/27
3920
java写的一个简单的表白器
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
逍遥子大表哥
2021/12/17
8490
java写的一个简单的表白器
基于Swing的FontChooser对话框
不知道为什么,原生的Swing有JFileChooser,JColorChooser但是却没有JFontChooser。虽然网上有很多类似的实现,但是鉴于是作业,我还是自己写了一个简单的FontChooser来练练手。而且真正写起来也不是那么的顺畅,果然还是发现了很多的坑。。。
mythsman
2022/11/14
6350
基于Swing的FontChooser对话框
「旅游信息管理系统」 · Java Swing + MySQL 开发「建议收藏」
码云仓库地址:https://gitee.com/ynavc/tourism_sys
全栈程序员站长
2022/08/11
3K0
「旅游信息管理系统」 · Java Swing + MySQL 开发「建议收藏」
图书管理系统添加的新类 11AddUser…
import java.awt.event.ActionListener;
明明如月学长
2021/08/27
6680
离线网页制作器(beta1.0)
1 package hhuarongdao; 2 /* 3 *使用方法: 先选择保存路径,然后输入相应的网址, 4 *然后会得到那个网页的离线版的 内容 5 * */ 6 import java.awt.BorderLayout; 7 import java.awt.Container; 8 import java.awt.FlowLayout; 9 import java.awt.Font; 10 import java.awt.event.ActionEve
Gxjun
2018/03/26
1.5K0
离线网页制作器(beta1.0)
java图形用户界面
在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。
找Bug
2025/04/04
3080
java图形用户界面
什么是线程以及线程的使用+示例
 案例二:(希望不会挨打)大多数人都喜欢玩游戏,玩游戏的时候会有抽奖,并且抽中的概率是很小的,以下是一个老虎机游戏
天蝎座的程序媛
2022/11/18
6560
什么是线程以及线程的使用+示例
相关推荐
Java 实现简易随机学生点名器(附源码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验