当前位置:首页 > 开发 > 编程语言 > 多线程 > 正文

多线程监听器事件模式(一个简单的例子)

发表于: 2014-07-16   作者:百合不是茶   来源:转载   浏览:
摘要:     多线程的事件监听器模式   监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到        创建多线程的事件监听器模式 思路:    1, 创建线程并启动,在创建线程的位置设置一个标记     2,创建队

   

多线程的事件监听器模式

  监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到

 

     创建多线程的事件监听器模式 思路:

   1, 创建线程并启动,在创建线程的位置设置一个标记

    2,创建队列保存线程

     3,遍历队列中的线程 ,并得到标记

 

 

下面有一个简单的例子:

package com.iteye.com;

/**
 * 创建线程统计类
 * 
 * @author Administrator
 * 
 */
public class ThreadMain extends Thread {

	String path;
	int flag = 1;
	int i = 0;

	public ThreadMain(String path) {
		this.path = path;
	}

	@Override
	public void run() {
		flag = 2;
		while (true) {
			//System.out.println("正在统计" + path + "的第" + i + "个文件");
			i++;
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			flag = 3;
		}
		
	}
	
}

 

package com.iteye.com;

import java.util.ArrayList;

public class Main {

	public static void main(String[] args) {
		
		ThreadMain m1 = new ThreadMain("m1");
		
		ThreadMain m2 = new ThreadMain("m2");
		
		ThreadMain m3 = new ThreadMain("m3");
		
		m1.start();m2.start();m3.start();
		
		
		ArrayList<ThreadMain> list = new ArrayList<ThreadMain>();
       list.add(m1);
       list.add(m2);
       list.add(m3);
       
       MainLisetener mlis = new MainLisetener(list);
       mlis.start();
	}

}

 

package com.iteye.com;

import java.awt.List;
import java.util.ArrayList;

import Thread0627.threadDemo;

/**
 * 创建线程
 * @author Administrator
 *
 */
public class MainLisetener extends Thread {

	ArrayList<ThreadMain> list;
	
	public MainLisetener(ArrayList<ThreadMain> list) {
		this.list = list;
	}
	
	@Override
	public void run() {
		
		while(true){
		   for(int i = 0;i<list.size();i++){
			   ThreadMain mn = list.get(i); 
			   if(mn.flag == 1){
				   System.out.println(Thread.currentThread().getName()+"线程还没执行");
			   }
			   if(mn.flag==2){
				   System.out.println(Thread.currentThread().getName()+"此线程准备执行");
			   }
			   
			   if(mn.flag==3){
				   System.out.println(Thread.currentThread().getName()+"此线程已经执行完毕");
			   }
		   }
			   
		}
	}
}

 运行结果:

  正在统计m2的第0个文件

正在统计m1的第0个文件

正在统计m3的第0个文件

正在统计m2的第1个文件

Thread-3此线程准备执行

Thread-3此线程已经执行完毕

Thread-3此线程准备执行

........

 

       

    

多线程监听器事件模式(一个简单的例子)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在开发中经常会遇到线程的例子,如果某个后台操作比较费时间,我们就可以启动一个线程去执行那个费
本博客有关多线程的文章: C#多线程编程(1):线程的启动 多线程编程(2):线程的同步 多线程编程(3
1.效果图: 这个软件主要的功能就是点击选择目录,然后点击开始复制,就会把选中目录下的所有文件和
Java模拟AWT事件监听器(Observer模式) 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监
 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听一个被观察者,当被观察者发生变化
今天写个个小程序.需要用到多线程.久了没有用,很模糊,现在花20分钟记录下.怕以后又忘记了. 写的时候
下面的项目是两年前学校老师布置的一个小项目,当时自己用了一种很笨拙的方式实现了,现在用面向对
随着信息时代的到来,需要处理的信息量越来越庞大,需要解决的问题越来越复杂,使得计算量剧增。通
随着信息时代的到来,需要处理的信息量越来越庞大,需要解决的问题越来越复杂,使得计算量剧增。通
前言 事件监听器是经常可以遇到的一种设计模式,一般用在这样一种场景下:当模块的一部分A在完成后
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号