多线程的事件监听器模式
监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到
创建多线程的事件监听器模式 思路:
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此线程准备执行
........
相关推荐
在提供的压缩包文件"linux下多线程读写socket的简单例子.mht"中,应该包含了一个简单的示例代码,通过阅读和分析这个代码,你可以更好地理解和掌握这些知识点,并实践在自己的项目中。对于初学者来说,这是一个很好...
标题"arduino 多线程Protothreads.zip"揭示了这个压缩包是关于如何在Arduino平台上利用Protothreads库实现多线程编程的一个示例。Protothreads并非真正的多线程,而是模拟了线程的概念,通过状态机的方式实现了并发...
当你想要触发事件时,只需要创建一个事件实例并调用此方法即可。例如: ```java UserRegisteredEvent event = new UserRegisteredEvent(this, newUser); getApplicationContext().publishEvent(event); ``` 在这里...
5. **多线程处理**:为了确保聊天室的实时性,通常会使用多线程来处理事件,避免因为处理事件阻塞主线程,影响用户的交互体验。 6. **性能优化**:对于大型聊天室,监听器的性能优化至关重要,例如通过异步处理、...
在多线程环境中,单例模式能确保在任何时刻都只有一个实例存在,避免了资源的浪费和状态冲突。单例模式通常应用于日志记录、缓存管理和线程池等场景。 其次,工厂方法(Factory Method)模式是一种创建型设计模式,...
当服务器有新数据发送时,它会触发一个事件,客户端通过监听这个事件来接收并处理数据。 在桌面应用中,例如用Java Swing或JavaFX构建的应用,事件处理同样重要。例如,我们可以为菜单项添加一个`ActionListener`,...
以下是一个简单的事件发布-订阅模式的例子: ```javascript const events = require('events'); const emitter = new events.EventEmitter(); // 订阅名为'event1'的事件,当触发时执行同步回调 emitter.on('event...
随着对框架理解的加深,你可以尝试创建更复杂的例子,进一步探索PureMVC的高级特性和应用场景,如模块化、多线程支持等。记住,实践是学习的最佳途径,动手实践这个例子将有助于你更好地掌握PureMVC。
下面将详细介绍这三个设计模式,并通过一个简单的例子来展示它们的应用。 首先,构建者模式(Builder Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在构建者模式中,一个构建器类会一步一步地...
接着定义了一个事件监听器接口`MouseMovedExampleListener`: ```java public interface MouseMovedExampleListener extends java.util.EventListener { void mouseMoved(MouseMovedExampleEvent mme); } ``` ...
- Struts框架就是一个典型的前端控制器模式的例子。 **9. 职责链模式是什么?** - 职责链模式允许多个处理对象有机会处理请求,直到其中一个对象处理它为止。 - 这种模式可以用来简化请求处理过程,降低发送者和...
随后,创建一个事件监听器接口,比如`EventListener`,它实现事件接口中的方法来处理事件。这个接口可能需要与特定的事件接口一起使用,以便处理特定类型的事件。 ```java public interface EventListener { void...
在多线程环境下,正确实现单例需要考虑线程安全,防止多个线程同时创建实例。在Demo中,可能会展示如何通过双重检查锁定(Double-Checked Locking)或静态内部类方式实现单例。 2. **工厂模式(Factory)**:提供一...
8. **多线程**:在图形界面设计中,可能需要用到多线程,确保界面的响应性。例如,长时间运行的操作应放在后台线程中执行,避免阻塞用户界面。 9. **Swing Timer**:Swing提供了一个定时器组件,可以定期触发事件,...
当事件发生时,事件源会触发一个事件,并将该事件传递给已注册的监听器进行处理。监听器通过重写接口中的方法来定义事件发生时应执行的操作。 Java AWT(Abstract Window Toolkit)库和Swing库提供了丰富的GUI组件...
`EventSubscriber` 类订阅了这个事件,并提供了一个事件处理方法 `OnMyEvent`。当 `EventPublisher` 类的 `TriggerEvent` 方法被调用时,它会触发 `MyEvent`,进而调用所有已注册的事件处理程序。 在"demoTest"项目...
15. **迭代器模式**:提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其底层表示。Java集合框架中的`Iterator`接口就是迭代器模式的体现。 16. **模版方法模式**:定义一个操作中的算法骨架,而将一些步骤...
在Node.js中,几乎所有的API都支持回调函数,当某个异步操作完成时,它会将回调函数放入一个事件队列中。事件循环会不断地检查这个队列,一旦发现有事件触发,就会调用对应的回调函数。这种设计模式被称为观察者模式...
7. **观察者模式**: 观察者模式定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Eclipse的事件监听机制即为此模式的应用。 8. **策略模式**: 策略模式定义...
面试官可能会要求实现一个简单的事件监听机制。 8. **策略模式**:定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。面试时可能会让你设计一个策略接口和几个实现策略的具体类,展示如何在运行时...