package com.woyo.test;
/**
* @author antty
* @date:2011-5-27
*
*/
public class ThreadTest {
private static boolean isStop;
public static void main(String[] args) {
startThread();
try {
Thread.sleep(5000);
isStop = true;
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("end===thread");
}
public static void startThread(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
startNewThread();
while (true) {
if(isStop){
break;
}
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("=========main thread:" + System.currentTimeMillis());
}
System.out.println("===end");
}
});
thread.start();
}
public static void startNewThread() {
Thread test = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("=========maintest thread:" + System.currentTimeMillis());
}
}
});
//test.setDaemon(true);
test.start();
}
}
daemon Thread 守护线程,Java中可以这样认为:守护主线程(main thread)的线程,与main thread同生共死。默认创建的线程是不是守护线程,要看创建它的线程(父线程)是否守护线程,它与父线程一致。main线程不是守护线程。
所以大部分,我们使用的创建的不是守护线程,想要让它成为守护线程,用thread.setDaemon(true)。这样它就与main同生共死了。main退出的时候,它也终止了(不管是否完成)。
理解有误,其实应该理解为当说有的非守护线程都执行完了,守护线程才终止
thread.setDeamonDaemon(true)---->守护线程
分享到:
相关推荐
在Android应用开发中,"守护线程确保pushService"是一个重要的技术实践,主要目的是确保即使在主应用程序进程被系统回收或者用户关闭后,仍然能够保持某些关键服务的运行,例如推送服务。这样的做法对于实时性要求高...
在Linux系统下,如果使用sigaction将信号SIGCHLD的sa_flags中的SA_NOCLDSTOP选项打开,当子进程停止(STOP作业控制)时, 不产生此信号(即SIGCHLD)。不过,当子进程终止时,仍旧产生此信号(即SIGCHLD)。 3....
所有与界面相关的操作都必须在主线程中执行,如果在其他线程中进行,会导致ANR(Application Not Responding)错误。主线程主要职责包括:处理用户点击事件、更新UI、解析XML布局等。 2. **子线程**:为了实现耗时...
此外,还讨论了守护线程(Daemon Threads)和线程优先级等概念。 第二章“Java线程详解”(Thread_Ch02_JavaThread_ok.pdf)深入探讨了Java平台下的线程机制,包括线程间的通信和协作,如wait()、notify()和...
创建Android守护进程主要包括以下步骤: 1. 创建一个新的Service子类:首先,我们需要继承自Android的Service类,并重写其关键方法,如onCreate()、onStartCommand()等。这是基础服务的起点。 2. 实现守护进程逻辑...
- **守护线程**:通过`Thread.setDaemon(true)`将线程标记为守护线程,守护线程在所有非守护线程结束后自动终止。一般用于后台服务,如垃圾回收。 6. **线程同步与通信** - **同步**:使用`synchronized`关键字...
5. 使用IntentService或者单独的线程处理服务中的任务,避免阻塞UI线程。 这种双进程守护机制虽然可以提高服务的存活率,但也需要注意几点:过度使用可能会导致系统资源过度消耗,影响用户体验;同时,由于涉及到跨...
我们写程序的时候,肯定会用到Service,而且还不止使用一个。当我们的程序中用到了Service的时候,说不定会被停掉。例如像360这样的杀毒软件可能...那么我们就需要对我们的Service进行一个保护,也就是这里所说的守护。
在线程管理工具类中,建造者模式可以用来配置线程的属性,比如优先级、守护状态等,使得代码更加清晰,更具可读性。例如,通过`ThreadManager.Builder`链式调用来设置参数,最后通过`build()`方法创建一个配置好的...
综上所述,基于AIDL实现的Android守护进程服务能够为应用程序提供持久后台运行的能力,但同时也需要考虑到系统资源的合理利用和用户体验。在设计和实现时,必须谨慎处理进程间通信、生命周期管理和资源管理等问题,...
总结来说,通过JNI在Android中实现守护进程,可以确保服务在后台持续运行,即使主进程被关闭,守护进程仍然可以监控并重启Service。这种方法虽然复杂,但可以有效地解决应用被强制关闭的问题,尤其在面对Android 5.0...
"JNI守护Service"的实现思路是:在Java层启动一个子线程,该线程通过JNI调用C/C++代码,创建一个新的子进程。这个子进程的任务就是监听主进程的生死状态。当检测到主进程死亡时,子进程将启动一个新的Service。这里...
4. 如果需要,可以通过`pthread_join`函数等待线程结束或使用`pthread_detach`让线程成为守护线程。在适当的时候,记得释放资源,如使用`pthread_exit`或`pthread_cancel`。 三、注意事项 - 使用JNI创建线程时,...
7. **多线程与异步处理**:在Android中,主线程负责UI操作,而耗时任务应在其他线程中执行,以避免阻塞UI。AsyncTask、Handler、Looper等工具可以帮助我们实现这一目标。 8. **网络编程**:Android应用常常需要访问...
5. **IntentService**:一个特殊的Service,它会在单独的工作线程中处理Intent,处理完成后自动停止。在双进程守护中,IntentService可用来启动或重启Service,避免阻塞主线程。 6. **权限设置**:为了在设备启动时...
在Android系统中,由于其基于Linux内核,也支持守护进程的概念,但实现方式略有不同。 标题"守护进程(互相监听)"可能指的是两个守护进程之间进行通信和监控的场景,这种设计可以确保即使一个守护进程出现问题,另...
- **线程**:RIL守护进程内部通过多个线程来处理不同的任务,例如处理请求、接收响应、错误处理等。 - **通信机制**:RIL守护进程与RIL驱动之间通过共享内存或socket进行通信。通信过程包括发送命令、接收响应等基本...
主线程可以通过`pthread_join()`等待某个子线程结束,或使用`pthread_detach()`使线程成为守护线程,自动清理资源。 在Android中使用`pthread`时,还有一些特殊注意事项: - 应用程序必须在`Android.mk`文件中链接...