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;
}
可以通过将这写方法在各个按钮的监听器中使用,, 从而改变条件式的真值,进而影响循环的状态,达到停止一个不再需要的线程的目的...
分享到:
相关推荐
多线程的了解,初步实现
初步了解线程 和画布的使用 对线程初学者有大用
### Ruby多线程编程初步入门 #### 一、引言 多线程编程是现代软件开发中的重要组成部分,尤其对于需要高效并发处理的任务而言更是如此。Ruby作为一种灵活且功能强大的编程语言,在支持多线程方面提供了丰富的工具...
2. **线程堆栈跟踪**:提供线程当前执行的函数调用堆栈,帮助开发者了解线程执行的具体位置。 3. **性能指标**:监测CPU和内存使用情况,分析线程对系统资源的影响。 4. **事件分析**:记录线程间的同步事件,如锁的...
标题中的“一个初步的用VB写“多线程”程序的例子”表明这是一个关于使用Visual Basic (VB)编程语言实现多线程技术的示例项目。多线程是计算机编程中的一个重要概念,允许程序同时执行多个任务,从而提高效率和响应...
2. **面向对象特性**: - 类与对象:Java基于类,类是创建对象的蓝图,对象是类的实例。 - 封装:通过访问修饰符(public, private, protected)实现数据隐藏,提供公共接口。 - 继承:一个类可以继承另一个类的...
通过以上讲解,你应该对MFC中的`CCriticalSection`有了初步了解,并能开始在自己的多线程项目中运用这一同步机制。不过,记住,线程同步是一个复杂的话题,需要结合具体场景灵活运用,避免潜在的并发问题。
2. 提高响应速度:多线程可以使程序的响应速度更快,提高用户体验。 3. 简化编程:多线程可以使编程变得更加简洁和易于维护。 多线程的缺点 1. 增加复杂度:多线程可以增加程序的复杂度,难以维护和调试。 2. 资源...
了解如何查看和管理进程及线程,对于系统优化、问题排查以及软件性能分析具有重要意义。 进程可以理解为一个正在执行的程序实例,每个进程都有独立的内存空间,包括代码、数据、堆栈等。在Windows系统中,可以通过...
虽然这与DirectShow和视频采集不直接相关,但提及它有助于了解管道过滤器在工业环境中的作用,可以与过滤器图中的某个环节进行类比,比如视频流中也需要过滤和清理以保证数据流的正常工作。 在DirectShow的多线程...
.rar"则可能探讨了I/O完成端口(IOCP)技术,这是在Windows中实现高效率Socket服务器的一种方法,虽然不直接适用于Linux,但了解异步I/O和线程池的概念对于优化Linux下的多线程Socket服务器也很有帮助。 最后,"多...
通过以上讲解,你已经对Delphi中的线程编程有了初步了解。实践中,你可以创建一个简单的项目,包含一个`TThread`子类,并观察其运行效果,逐步加深理解。记住,线程虽好,但过度使用可能会导致复杂性和维护成本上升...
### 多线程编程的入门教程 ...通过以上内容的学习,相信你已经对多线程编程有了初步的认识,并且了解到了如何使用Win32API来进行多线程编程。在实际开发中,合理利用多线程能够极大地提升程序的性能和用户体验。
5. 注入技术的实现:文中虽然没有给出详细的代码实现,但作者通过描述创建远程线程和注入代码的过程,让我们对注入技术有了初步的了解。根据描述,我们了解到实现远程线程注入通常需要执行以下步骤: - 提升进程...
Java线程是Java编程中的重要概念,它允许程序并发执行多...通过以上讲解,你已经对Java线程有了初步了解,从创建线程到线程同步、通信、管理,以及线程的特殊特性。实践这些知识点,将有助于你在多线程编程中游刃有余。
3. **线程安全通信**:了解如何在多个线程之间安全地交换数据,避免竞态条件。 4. **线程同步**:学习如何使用`Synchronize`和`Queue`方法在不同线程间同步代码执行。 5. **事件驱动编程**:理解如何通过消息队列和...
在描述中提到的“这些程序分为服务器和客户端,使用Delphi开发,初步实现了QQ聊天功能”,这暗示了我们将探讨的是如何在多线程环境下构建分布式系统,比如服务器端负责处理多个客户端的并发请求。 **进程与线程的...
通过阅读《Linux多线程服务端编程:使用muduo C++网络库》样章,读者可以对muduo库有一个初步的认识,并开始掌握如何在实际项目中应用这些技术。全书可能还涵盖了更多高级主题,如分布式系统、负载均衡、故障恢复等...
在这种模型中,Acceptor线程池专门处理客户端连接,完成初步的认证等操作,然后将连接注册到后端的子Reactor线程池,由子线程池的线程负责后续的读写操作。这可以进一步提升服务端处理能力,确保连接建立过程的性能...