当前位置: 首页 > 面试题库 >

在Java中创建线程以在后台运行

范嘉
2023-03-14
问题内容

我想从主Java程序中产生一个Java线程,并且该线程应单独执行而不会干扰主程序。应该是这样的:

  1. 用户启动的主程序
  2. 做一些业务工作,应该创建一个可以处理后台进程的新线程
  3. 一旦创建线程,主程序就不要等到生成的线程完成。实际上,它应该是无缝的。

问题答案:

一种简单的方法是自己手动生成线程:

public static void main(String[] args) {

     Runnable r = new Runnable() {
         public void run() {
             runYourBackgroundTaskHere();
         }
     };

     new Thread(r).start();
     //this line will execute immediately, not waiting for your task to complete
}

另外,如果您需要产生多个线程或需要重复执行,则可以使用更高级别的并发API和执行程序服务:

public static void main(String[] args) {

     Runnable r = new Runnable() {
         public void run() {
             runYourBackgroundTaskHere();
         }
     };

     ExecutorService executor = Executors.newCachedThreadPool();
     executor.submit(r);
     // this line will execute immediately, not waiting for your task to complete
     executor.shutDown(); // tell executor no more work is coming
     // this line will also execute without waiting for the task to finish
    }


 类似资料:
  • 问题内容: 我有一个使用pthread的C程序。 我希望新创建的线程在创建后立即运行。 这背后的原因是我的线程具有用于设置信号处理程序的初始化代码,并且在主线程发送一些信号之前,我必须确保处理程序已就绪。 我尝试过紧随其后的尝试,但没有成功。 我怀疑这会有所不同,但是我在x86_64上运行Linux 3.6。 谢谢 问题答案: 或者,您可以使用屏障,即调用pthread_barrier_wait(

  • 我有一个简单的java程序,它只是一段代码,可以从数据库中读取并根据某些条件修改数据库的内容。现在,我想要的是这个程序应该在启动时自动启动并在后台静默运行,除非有人从任务管理器中杀死它。我以前从未做过这样的事情,也不知道具体该怎么做。有人能帮我解决这个问题吗?谢谢你...

  • 问题内容: 我想在后台线程中运行一些Runnable。我想使用Handler,因为它便于延迟。我的意思是 凡 可运行 应当运行 后台 线程。是否可以创建这样的处理程序?是否在某个地方有“背景” Looper,或者该如何创建? PS我知道如何使用自定义类扩展Thread,但是比处理程序方式需要更多的编码工作。因此,请不要发布其他解决方案或类似的内容 如果Handler能以“干净”的方式做到这一点,我

  • 我想在后台线程中运行一些Runnable。我想使用Handler,因为它方便延迟。我的意思是 runnable应该在后台线程中运行。有可能创造这样的处理器吗?某个地方有没有“背景”Looper或者我怎么才能创建它? 附言:我知道如何使用自定义类扩展Thread来做到这一点,但它需要更多的编码工作,而不是以处理程序的方式进行。因此,请不要发布其他解决方案或类似内容 我只是想知道汉德勒是否能以“干净”

  • 问题内容: 据我了解,默认情况下,Alamofire请求在后台线程中运行。 当我尝试运行此代码时: 在网络呼叫中的所有项目都完成打印之前,UI一直无响应。所以我尝试将GCD与Alamofire结合使用: 而且用户界面仍然没有响应。 我在这里做错什么了吗,还是问题出在Alamofire? 问题答案: 我对默认情况下在后台线程上运行Alamofire的做法有误。默认情况下,它实际上在主队列上运行。我已