`
laiseeme
  • 浏览: 122412 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

swing与并发【工作线程】【取消背景任务】

阅读更多
可以使用SwingWorker.cancel()来取消一个背景任务。如果失败(比如已经完成或已经取消),会抛出异常。
//这段程序代码主要为读者展示如何取消背景任务
import java.awt.*;
import java.util.List;
import javax.swing.*;
public class threadtest1 
{
	static final int WIDTH=600;
	static final int HEIGHT=800;
	JFrame frame;
	JPanel pane;
	static JTextField text1;
	static worker wor1;
	static worker wor2;
	public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
    {
        ………………………………..//与上例中相同位置内容相同
    }
	public threadtest1()
	{
		………………………………..//与上例中相同位置内容相同

	button1.addActionListener
	(//将计数工作放入工作线程,然后执行它
new ActionListener()
    {
        public void actionPerformed(ActionEvent e) 
        {
        	(wor1 = new worker()).execute();
        }
    }
	);

    button2.addActionListener
    (//将计数工作放入工作线程,然后执行它
    new ActionListener()
    {
        public void actionPerformed(ActionEvent Event) 
        {
        	(wor2 = new worker()).execute();
        }	
    } 
    );

    button3.addActionListener
    (//当单击此按钮时,后台计数会停止,并且会将目前的数据显示在文本组件中。
    new ActionListener()
    {
    	public void actionPerformed(ActionEvent Event) 
        {
    		wor1.cancel(true);
			wor1 = null;	
        }	
    }
    );
    button4.addActionListener
    (//当单击此按钮时,后台计数会停止,并且会将目前的数据显示在文本组件中。
    new ActionListener()
    {
        public void actionPerformed(ActionEvent Event) 
        {
        	wor2.cancel(true);
			wor2 = null;		
        }	
    }
    );
    button5.addActionListener
    (
    new ActionListener()
    {
        public void actionPerformed(ActionEvent Event) 
        {
        	
        	wor1.cancel(true);	
        	wor2.cancel(true);
        }	
    }
    );
	}
	private static class counter 
	{
		private final int sum;

		counter(int sum) 
		{
			this.sum=sum;
		}
	}
	private class worker extends SwingWorker<Void, counter> 
	{
		protected Void doInBackground() 
		{
			int sum = 0;
			while (!isCancelled()) 
			{
				sum++;
			}
			publish(new counter(sum));
			return null;
		}

		protected void process(List<counter> count) 
		{
			counter cou = count.get(count.size() - 1);
			
			text1.setText(String.format("%d", cou.sum));
		}
	}
	public static void main(String[] args)
	{
		SwingUtilities.invokeLater(new Runnable() {
			public void run() 
{
				wor1.cancel(true);	
	          	wor2.cancel(true);
				new threadtest1();
			}
		});
	}
	
}
分享到:
评论

相关推荐

    Java Swing图形界面开发与案例详解

    本件超过了上传限制,请...第16~19章主要讲述有关Swing图形开发的其他知识,包括观感器、Swing线程与并发、模型与架构等。第20章通过一个综合实例使读者能够在实际开发中理解和巩固所学知识,从而提高综合应用能力。

    Java并发编程实战

    7.1 任务取消111 7.1.1 中断113 7.1.2 中断策略116 7.1.3 响应中断117 7.1.4 示例:计时运行118 7.1.5 通过Future来实现取消120 7.1.6 处理不可中断的阻塞121 7.1.7 采用newTaskFor来封装非标准的取消122 ...

    Java并发编程(学习笔记).xmind

    任务取消 停止基于线程的服务 处理非正常的线程终止 JVM关闭 线程池的定制化使用 任务和执行策略之间的隐性耦合 线程池的大小 配置ThreadPoolExecutor(自定义的线程池) 此处需要注意...

    模拟多进程并发

    模拟多进程的并发执行,java编写,swing实现

    java_diary_18.rar_JFC_swing_反射机制_国际化 java

    j2se 18天笔记是根据网络上资料而制作成的CHM帮助文档 目录: Day01:java环境与数据类型 Day02:数据运算与数组 Day03:面向对象 Day04:修饰符与类权限 ...Day17:新特性与并发线程 Day18:软件开发流程

    java Swing的使用.docx

    这是为了确保Swing应用程序在正确的线程中运行,避免出现并发访问问题。 Swing还提供了许多其他的GUI组件和功能,如文本框、标签、列表、菜单、工具栏、进度条、表格等。开发人员可以使用这些组件和功能来构建复杂...

    Qcs.rar_即时通讯swing

    这是一个类似于QQ的即时通讯的程序,基于socket的TCP通信,支持并发多线程,带Swing界面。

    jmeter 测试工具 使用java自测 并发测试 环境测试 压力测试

    4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 5.精心的GUI设计允许快速操作和更精确的计时。 6.缓存和离线分析/回放测试结果。 JMeter的高可扩展性 1.可链接的取样器允许...

    图解java多线程设计模式

    精选12种与多线程和并发处理相关的设计模式 264张图表 + 300段Java示例程序 = 轻松学习多线程编程 日本经典多线程入门书,原版长销11年! 1.图文并茂 通俗易懂 日本资-深技术作家、《程序员的数学》作者结城浩执笔...

    Java+swing实现学生信息管理系统源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的汽车租赁管理系统.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的酒店管理系统项目源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现简单的购物系统项目源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的学生选课系统项目源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的学生选课成绩信息管理系统.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql图书管管理系统(升级版).zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的仓库商品管理系统项目源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql:Oracle实现的飞机订票系统项目源码.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql电影票购票管理系统(视频+源码).zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

    Java+swing+mysql实现的员工工资管理系统项目源码附带视频教程.zip

    我们使用了多线程技术来处理并发请求和耗时操作,以保证系统的响应速度和用户体验。我们还使用了持久化技术,如数据库和文件系统,以存储和管理数据。此外,我们还采用了错误处理和日志记录等技术,以提高系统的稳定...

Global site tag (gtag.js) - Google Analytics