在多线程编程中,某些情况下,主线程需要等待子线程安全退出后,主线程在继续执行。
为了实现这个效果,我借助Thread类isAlive()方法来实现。
isAlive()方法是判断线程是否是活跃状态。
以下是实现代码:
class Test 类是主线程。
class ProcessAccept 类是子线程。
线程类 ProcessAccept :
/**
* 处理接入线程类
*
* @author Administrator
*
*/
class ProcessAccept extends Thread {
/**
* 线程停止标志
*/
private boolean stopRequested = false;
/**
* 同步锁
*/
private ReentrantLock lock = new ReentrantLock();
/**
* 向线程发送停止请求
*/
public void stopRequest() {
lock.lock();
// 设置停止标志为真
stopRequested = true;
lock.unlock();
}
/**
* 获得当前停止标志
*
* @return 前停止标志的值
*/
private boolean getStopRequest() {
boolean tempStopRequested = false;
// 同步加锁lock.lock()
lock.lock();
tempStopRequested = stopRequested;
// 同步解锁lock.unlock()
lock.unlock();
return tempStopRequested;
}
/**
* 线程处理接入
*/
public void run(){
while (true) {
//判断停止标志
if (this.getStopRequest()){
break;
}
//此处处理业务逻辑
}
}
调用类Test:
public class Test {
ProcessAccept processAccept = new ProcessAccept();
public int stop(){
try {
// 将线程的退出标志设置为真,处理未决连接请求
processAccept.stopRequest();
//等待线程安全退出后,再向下执行
while(processAccept.isAlive()){
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
Test t = Test();
//启动线程
t.processAccept.start();
//安全停止线程
t.stop();
}
分享到:
相关推荐
在编程领域,尤其是在Java或C++等支持多线程的编程语言中,多线程安全退出是一个关键概念。多线程允许程序同时执行多个任务,提高系统效率,但同时也引入了线程同步和资源管理的问题。这个实例源代码,...
Java多线程编程安全退出线程方法介绍 Java多线程编程安全退出线程方法的重要性在于确保线程的资源正确释放,避免程序工作在不确定的状态下。以下是Java多线程编程安全退出线程方法的知识点: 1. Thread.stop()方法...
总的来说,理解和掌握Java线程的创建、状态管理、同步机制和线程安全是进行多线程编程的基础,这对于开发高效、稳定的并发程序至关重要。在实际编程中,应充分利用Java提供的工具和机制,避免潜在的并发问题,提升...
《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...
本文将深入解析Java线程的相关知识点,包括线程的定义、创建、状态管理、线程同步和安全问题。 1. **线程定义** 在Java中,线程是进程中的单一顺序控制流,是程序执行的基本单元。线程在进程的上下文中运行,共享...
### Java线程安全的核心概念与实践 #### 一、Java内存模型 理解Java线程安全首先需要掌握Java内存模型(JMM)。JMM是Java虚拟机(JVM)的一部分,它规定了程序中各种变量(包括实例字段、静态字段和构成数组对象的...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过类`Thread`或实现`Runnable`接口来创建和管理的。Java线程模型是基于操作系统的原生...
Java线程安全是多线程编程中的一个核心概念,它涉及到在并发环境下如何正确地管理共享资源,确保程序的正确性和一致性。Java提供了一系列机制来处理线程安全问题,包括同步机制、线程局部变量、并发工具类等。以下是...
Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...
这些知识点覆盖了Java线程编程的基础到高级应用,对于Java开发者来说,理解和掌握这些内容对于编写高效、安全的并发程序至关重要。通过深入学习和实践,开发者能够更好地应对多线程环境下的挑战。
《Java线程》这本书是Java开发人员深入理解并发编程的重要参考资料。Java作为一种广泛使用的编程语言,其并发处理能力是高效程序设计的关键。本电子书详细介绍了如何在Java环境中有效地使用多线程,优化程序性能,并...
Java提供了多种机制来保证线程安全,比如使用synchronized关键字来同步方法或代码块,实现线程之间的同步。当一个线程试图进入一个已经被另一个线程持有的同步代码块时,它将进入阻塞状态,直到同步代码块的执行线程...
8. **并发集合类**:Java提供了并发安全的集合类,如`ConcurrentHashMap`, `CopyOnWriteArrayList`, `BlockingQueue`等,它们内部实现了线程安全的算法,可以在多线程环境下高效使用。 9. **线程中断**:`interrupt...
### Java线程培训资料知识点详解 #### 一、Java线程基本概念 1. **如何编写与启动线程** - **方式一:继承Thread类** ```java class MyThread extends Thread { @Override public void run() { // 业务逻辑 ...
4. **线程优先级与守护线程**:Java线程有优先级之分,可以影响调度,但实际效果取决于操作系统。守护线程(Daemon Thread)是一种特殊类型的线程,当它是系统中唯一运行的线程时,JVM会自动退出。 5. **并发集合与...
### Java线程学习知识点 #### 一、Java线程概览 - **定义与作用**:线程是在程序中独立且并发执行的路径。在Java中,线程被设计为语言的一部分,而不是作为操作系统的底层工具。每个Java程序至少包含一个主线程,在...
Java线程是多任务编程的...深入学习Java线程,不仅需要理解以上基本概念,还要熟悉线程池的使用、死锁和活锁的预防、线程中断机制、线程安全类库如Concurrent包等。通过实际项目中的实践,才能更好地掌握Java线程编程。
Java线程有10个优先级,从`MIN_PRIORITY`(1)到`MAX_PRIORITY`(10),默认是`NORM_PRIORITY`(5)。优先级高的线程更可能被调度执行,但不保证。 4. **线程同步** 当多个线程访问共享资源时,可能会出现竞态条件,...
2. 守护线程与用户线程:守护线程不阻碍JVM退出,而用户线程则会阻止JVM退出。 八、中断与异常处理 1. Thread.interrupt():用于中断线程,但不一定立即停止,需要在run()方法内部检查中断标志并作出相应处理。 2. ...
本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...