Android中的嵌套线程(线程内的线程)

时间:2012-06-09 06:52:42

标签: android multithreading nested

是否可以实现嵌套线程?我遇到了需要在线程内调用线程的情况。我也有其他选择,比如在同一个线程中实现所有方法,但它变得太乱了。该项目中途将由其他人接管,因此其他人可能很难将所有内容整合在一起。

同样建议在一个线程内调用多个线程(出于与上述相同的原因)。

它会以任何方式影响性能(逻辑上,它应该会提高性能,因为该软件适用于双核设备)??

2 个答案:

答案 0 :(得分:0)

创建新线程会让您处理起来更麻烦,所以我建议您不要仅为了分离事物而手动创建新线程。

如果您希望在主UI线程之外进行相当不同的工作,则有easier ways of dealing with threading。考虑将它们放入AsyncTask中,如果要同时运行多个任务,可以确保它们运行的​​执行程序具有大于一个的线程池大小。

如果没有更详细的问题,很难确切地说出正确的方法是什么。

答案 1 :(得分:0)

在从@kabuko,@ Foxical Logic得到答案并做了一些研究后,我发现使用AsyncTask实际上不可能实现嵌套线程,因为AsyncTask需要在UI线程中执行。
但是,我试图通过以下方式实现:

  • 在初始UI线程中,调用不同的多个AsyncTask来执行。

    示例:

    protected void onCreate(Bundle savedInstanceState){.....

    DownloadUpdates.execute(FILEID); // AsyncTask#1

    UpdateNotification.execute(); // AsyncTask#2

    ...}

注意(如文档here中所示):

  

单个任务只能执行一次(将抛出异常   如果尝试第二次执行)

  • 但是,如果两个线程是相互依赖的,则避免使用任何此类逻辑,因为它的执行时间是不可预测的,并且它 可能会陷入僵局或其他什么。
  • 此外,如@Fuzzical Logic所述,使用普通线程(不使用AsyncTask)也可以进行嵌套线程