package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
public class Daemonromactory implements Runnable
{
public void run()
{
try
{
while (true)
{
TimeUnit.MILLISECONDS.sleep(100);
System.out.println(Thread.currentThread() + " : " + this);
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args)
throws Exception
{
ExecutorService service = Executors.newCachedThreadPool(new DaemonThreadFactory());
for (int i = 0; i < 10; i++)
{
service.execute(new Daemonromactory());
}
System.out.println("all daemons started");
TimeUnit.MILLISECONDS.sleep(100);
}
}
class DaemonThreadFactory implements ThreadFactory
{
public Thread newThread(Runnable r)
{
Thread t = new Thread(r);
t.setDaemon(true);
return t;
}
}
例子2 :由后台线程创建的线程全部都是后台线程。后台线程的存活时间取决于调用它的前台线程,如果前台线程执行完毕,后台线程执行就结束。
package thread;
import java.util.concurrent.TimeUnit;
/** 设置后台执行线程 */
public class SimpleDaemons implements Runnable
{
public void run()
{
try
{
while (true)
{
TimeUnit.MILLISECONDS.sleep(100);
System.out.println(Thread.currentThread());
}
}
catch (Exception e)
{
System.out.println("sleep() interrupted");
}
}
public static void main(String[] args)
throws Exception
{
for (int i = 0; i < 10; i++)
{
Thread daemon = new Thread(new SimpleDaemons());
daemon.setDaemon(true);// 设置为后台启动
daemon.start();
}
System.out.println("all daemons started");
TimeUnit.MILLISECONDS.sleep(100);// 当主程序停止时,后台程序同时被停止,可以设置睡眠时间来测试
}
}
分享到:
相关推荐
通过设置DoWork事件处理程序执行后台任务,ProgressChanged处理进度更新,而RunWorkerCompleted则处理任务完成后的工作。 5. **Task(任务并行库)** .NET 4.0引入了Task Parallel Library(TPL),Task是其核心类...
在Java编程中,后台进程(Background Process)通常指的是在主应用程序执行时,不与用户界面直接交互,而是默默地运行在后台执行特定任务的程序部分。这些任务可能包括数据处理、定时任务、服务监控等。Java提供了...
在计算机编程领域,尤其是涉及到多线程操作时,线程被分为两类:前台线程和后台线程。本文将深入探讨这两种线程的区别,以及如何通过`IsBackground`属性来设置线程的类型。 首先,前台线程是应用程序的主要执行线程...
Web Workers可以让JavaScript在后台线程中执行计算密集型任务,而不影响主线程的用户界面。Promise则可以通过异步操作来控制代码的执行顺序,从而模拟线程等待的效果。 在`try-thread-sleep-master`压缩包中,我们...
本示例 演示采用线程的方式在后台执行任务 要在Android系统中创建和启动线程,与传统的Java程序相同,首先要创建一个Thread对象,使用Thread类的start方法启动线程 启动后将会执行Runnable接口的run方法
--{template data/blocktpl/1}-->`,在模板中添加此代码,可以调用预先设置好的数据块。 - 站外 JS 调用:通过 JavaScript 脚本实现,如`<script src="http://www.ccvita.com/js.php?id=1"></script>`,可以获取...
在计算机科学领域,多线程(Thread)是并发执行任务的一种技术,特别是在Java等支持多线程编程的语言中,它允许程序同时执行多个不同的任务,从而提高了系统的效率和响应速度。"Thread --- process"这个标题可能是在...
Java多线程编程是开发高并发应用的基础,其中Thread类是实现多线程的核心类。本文将详细解析Thread类的常用结构以及线程优先级。 一、Thread类的常用结构 1. 线程中的构造器 - `Thread()`:创建一个没有指定名称...
在编程领域,线程(Thread)是程序执行的最小单元,它可以并发地与程序的其他部分一起运行。在 Delphi 这样的面向对象的 Pascal 编程环境中,线程技术被广泛应用于多任务处理和异步操作,以提高程序的响应性和效率。...
-- 设置形状属性 --> </shape> </item> <item android:state_pressed="true"> <!-- 按下状态 --> <shape android:shape="rectangle"> <!-- 设置形状属性 --> </shape> </item> ...
- 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法,`run()`方法包含线程要执行的任务。通过创建该类的实例并调用`start()`方法启动线程。 - 实现`Runnable`接口:创建一个实现`...
在C++中,虽然标准库没有直接提供线程池的实现,但可以通过`std::thread`类和自定义的调度策略来模拟实现。通常,线程池会包含以下几个关键组件: 1. **任务队列**:存储待执行的任务。新任务被添加到队列中,等待...
pthread_join(pool->threadid[i], NULL); } // 释放资源 free(pool->threadid); CThread_worker *worker = pool->queue_head; while (worker) { CThread_worker *temp = worker; worker = worker->next; ...
`BeginInvoke`是异步的,它立即返回,而操作在后台执行。两者都需要传递一个委托,该委托定义了要在UI线程上执行的方法。 3. **避免复制粘贴**:为减少重复代码,可以创建一个泛型方法或扩展方法,它接受控件和一个...
在`Thread_test`这个示例中,可能包含了如何创建和管理后台线程的代码,演示了如何将线程设置为后台线程,并展示了在多线程环境下,后台线程如何与前台线程交互。 多线程的使用可以提高程序的响应速度和并发能力,...
Log.d(androidService.TAG, Thread.currentThread().getName() + "--->" + "ServiceBroadcastReceiver onReceive"); String action = intent.getAction(); if (START_ACTION.equalsIgnoreCase(action)) { ...
在ASP.NET开发中,有时我们需要实现一个功能,即在后台执行耗时操作时,让前端用户能够看到处理的进度,从而提高用户体验。这种技术通常被称为后台处理进度条。本篇文章将详细讲解如何在ASP.NET中实现在前台显示后台...
1. 创建Service: 在Android Studio中,可以通过右键项目 -> New -> Service -> Service来创建一个新Service。默认生成的模板包括`onCreate()`和`onStartCommand()`方法,这两个方法是Service生命周期中的关键点。 2...
后台线程(如子线程)通常用于执行计算密集型任务,以避免阻塞UI。 3. **Invoke/BeginInvoke方法**:当子线程需要修改UI元素时,必须使用控件的`Invoke`或`BeginInvoke`方法。这是因为这些方法会确保在正确的线程...