`
大_圣
  • 浏览: 17108 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

线程初步了解2

阅读更多

1.线程的监听模式.

由于每个线程都是由一个对象去实现的,所以当我们想要监听这些线程的时候,只需要将每个对象里的重要数据拿出来处理.所以,通常可以将这些对象放入一个队列中去,然后再将这个队列直接传给监听线程,而在监听线程中,我们又可以再将其有用的数据取出,完成某些特定的功能.当然,首先要保证的是监听线程是在要被监听线程之前被启用..

// 匿名内部类
		ActionListener l = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if (e.getActionCommand().equals("开始")) {
					// 监听线程
					Listener l = new Listener(list); // list是存放Ball对象的队列
					l.start();

					// 创建小球线程
					Ball b = new Ball(jp, x);
					list.add(b);// 将线程存入队列中
					b.start();
				}

			}
		};

  

 

 

2.线程的控制.

昨天已经知道.为了使这个线程能一直持续的运行下去 , 通常会让run方法进入到一个死循环中... 

但如果我们要让这个线程结束呢 ?

本来JDk中是有个stop方法的,能够强行关掉一个线程,但是由于它的不安全性,所以通常不采用这个方法来结束一个线程.而又因为只要run方法中的代码都执行完,这个线程便会停止,因此.我们只要能够改变run方法中的死循环中的被判断条件的状态.当这个循环不再是一个死循环,而是一个可以执行完的循环时,, 那么,只要这个这些代码都执行完,这个线程也自然就停止活动了..

while (!isStop) {//isStop初始值为false
			while (!isPause) {//isPause初始值为false

				// 清除图像
				// 设置颜色为窗体的背景色
				g.setColor(bu.getContentPane().getBackground());
				g.fillOval(x0, y0, 30, 30);

				g.setColor(Color.BLUE);
				// 在内部类中使用外部的变量,必须定义成final
				g.fillOval(x0 += x, y0 += y, 30, 30);
				try {
					Thread.sleep(1000);// 沉睡时间,球移动位置的时间间隔
				} catch (Exception ef) {
					ef.printStackTrace();
				}

			}
			try {
				Thread.sleep(1);// 沉睡时间,暂停时的休眠
			} catch (Exception ef) {
				ef.printStackTrace();
			}
		}

 

这样,便可以通过修改isStop以及isPause的值来改变这个循环的状态

/**
	 * 暂停线程的方法
	 */
	public static void pauseThread() {
		isPause = true;
	}

	/**
	 * 继续线程的方法
	 */
	public static void resumeThread() {
		isPause = false;
	}

	/**
	 * 停止线程的方法
	 */
	public static void stopThread() {
		isPause = true;
		isStop = true;
	}

 

 

可以通过将这写方法在各个按钮的监听器中使用,, 从而改变条件式的真值,进而影响循环的状态,达到停止一个不再需要的线程的目的...

分享到:
评论

相关推荐

    多线程的了解,初步实现

    多线程的了解,初步实现

    初步了解线程

    初步了解线程 和画布的使用 对线程初学者有大用

    java线程基础

    java线程基础,线程初步接触者所需要了解的

    实例演示_消息线程_

    消息线程的初步学习使用,适用于初学者了解消息线程的机制

    多线程 电子书 助你快速学习

    本书是多线程的初步讲解,看完这本书,能够是你初步的对多线程编程有了了解

    C++多线程编程简介

    针对初学者和多vc++有初步了解的人使用

    java多线程编程笔记

    java多线程编程笔记,本人亲自整理的,适合于初学java的同学们,相信通过努力学习我们一定会对java有个初步的了解

    多线程文章目录

    有助于新手初步了解线程相关的知识同时加深对基础的理解。 了解线程的状态、常用方法以及Thread、Runnable、Callable、Future、FutureTask这些基础概念和简单应用。 Java多线程②——多线程知识梳理 有助于了解...

    python多线程http下载实现示例

    复制代码 代码如下:# -*- coding: utf-8 -*-# Author: ToughGuy# Email: wj0630@gmail.com# 写这玩意儿是为了初步了解下python的多线程机制# 平时没写注释的习惯, 这次花时间在代码里面写上注释也是希望有问题的地方...

    thrift初步了解

    TNonblockingServer 多线程 非阻塞 THsHaServer api说是TNonblockingServer的扩展,半同步半异步 可定义的数据类型: 基本类型: bool:布尔值,true 或 false,对应 Java 的 boolean byte:8 位有符号整数,对应...

    Linux线程(进程)数限制分析

     2. 初步原因分析和解决  让运维的兄弟在服务上查看内存、CPU、网络、IO等基本信息都正常。于是自己到运维的服务器上看了一下,下面是slabtop –s c的运行结果,问题初步原因貌似出现了:  如果看到这个...

    模拟风扇实验JAVA_GUI

    java程序设计实验,对于GUI界面设计的初步认识,与线程的了解运用。

    浅谈chuck-lua中的多线程

    Lua对多线程支持初步体验是本文要介绍的内容,主要是来了解LUA中多线程的使用,,经过反复的实验得到的结果是,lua不支持多线程,如何让它支持?来看本文内容。

    Java语音学习,基础教程

    初步掌握多线程:理解线程的概念,线程同步和Lock的用法,以及线程的生命周期。 以上这些是Java语言学习的主要内容,当然也可以根据实际应用的需要进行有针对性的学习。此外,建议在学习的过程中,不仅要学习理论...

    TreeView 控件中显示关系数据 .,C#,asp.net,自学 TreeView

    TreeView 控件中显示关系数据 .,C#,asp.net,自学 初步了解和运用TreeView的所有功能。 有注释

    操作系统复习题(包含习题讲解)

    要求 掌握 进程的概念,进程的状态及其转换, 进程控制原语,用 P、V操作解决进程同步问题,了解进程间的通信, 了解线程的概念。 第三章 死锁 掌握死锁的概念和产生的必要条件,掌握死锁的预防和避免方法,了解...

    QT经典中文手册.chm

    初步了解 进一步了解 最新动态 关于Qt Qt的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 实例 循序渐进实例 白皮书 Qt 3.0的关键特征 修改历史 从Qt 2.x移植...

    QT中文教程

    初步了解 进一步了解 最新动态 关于Qt Qt的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 实例 循序渐进实例 白皮书 Qt 3.0的关键特征 修改历史 从Qt 2.x移植...

    asp.net多线程的TCP端口扫描程序的设计与实现(源代码+论文)_new.rar

    对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需求概述、系统结构与设计哲学、...

    操作系统大作业,基于共享内存实现简易文件管理系统+源代码+文档说明

    了解线程(进程)调度方法;掌握内存空间的分配与回收的基本原理;通过模拟文件管理的工作过程,了解文件操作命令的实质。 了解现代计算机操作系统工作原理,具有初步分析设计操作系统的能力。 通过在计算机上编程...

Global site tag (gtag.js) - Google Analytics