Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的嵌套线程(线程中的线程)_Android_Multithreading_Nested - Fatal编程技术网

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

Android中的嵌套线程(线程中的线程),android,multithreading,nested,Android,Multithreading,Nested,建议执行嵌套线程吗??我遇到了需要在线程中调用线程的情况。我也有其他选择,比如在同一个线程中实现所有方法,但是它变得太不整洁了。项目进行到一半时会被其他人接管,所以其他人可能很难把所有的东西都整合起来 另外,建议在一个线程内调用多个线程(原因与上面相同) 它是否会以任何方式影响性能(从逻辑上讲,它应该会提高性能,因为软件是为双核设备设计的)?创建新线程会给您带来更多麻烦,因此我建议您不要仅仅为了分离东西而手动创建新线程 如果您希望在主UI线程之外处理相当不同的工作块,则有。考虑将它们放入 Ayc

建议执行嵌套线程吗??我遇到了需要在线程中调用线程的情况。我也有其他选择,比如在同一个线程中实现所有方法,但是它变得太不整洁了。项目进行到一半时会被其他人接管,所以其他人可能很难把所有的东西都整合起来

另外,建议在一个线程内调用多个线程(原因与上面相同)


它是否会以任何方式影响性能(从逻辑上讲,它应该会提高性能,因为软件是为双核设备设计的)?

创建新线程会给您带来更多麻烦,因此我建议您不要仅仅为了分离东西而手动创建新线程

如果您希望在主UI线程之外处理相当不同的工作块,则有。考虑将它们放入<代码> AycCastaseS,并且如果您想同时运行多个任务,则可以确保它们运行的执行器具有一个以上的线程池大小。
如果不详细说明问题的实质,就很难说正确的方法是什么。

创建新线程会给您带来更多麻烦,因此我建议您不要仅仅为了分离内容而手动创建新线程

如果您希望在主UI线程之外处理相当不同的工作块,则有。考虑将它们放入<代码> AycCastaseS,并且如果您想同时运行多个任务,则可以确保它们运行的执行器具有一个以上的线程池大小。
如果不详细说明问题的实质,很难说正确的方法是什么。

从@kabuko、@Fuzzical Logic获得答案并做了一些研究后,我发现嵌套线程实际上不可能使用AsyncTask,因为异步任务需要在UI线程内执行。
然而,我试图实现的是:

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

    例如:

    创建时受保护的void(Bundle savedInstanceState){

    DownloadUpdates.execute(fileId);//异步任务#1

    UpdateNotification.execute();//异步任务#2

    ……}

(如文件所示):

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

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

在从@kabuko、@Fuzzical Logic获得答案并做了一些研究之后,我发现嵌套线程实际上不可能使用AsyncTask,因为AsyncTask需要在UI线程中执行。
然而,我试图实现的是:

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

    例如:

    创建时受保护的void(Bundle savedInstanceState){

    DownloadUpdates.execute(fileId);//异步任务#1

    UpdateNotification.execute();//异步任务#2

    ……}

(如文件所示):

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

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

嗯,我只想让事情简单化,提高程序的效率。如果我调用单个线程中的所有方法,那么执行可能会花费太长时间。所以我希望所有的方法同时运行,这样处理时间就更少了。实际上,方法之间没有关系,所以嵌套线程中方法的实现顺序无关紧要。我希望你明白我想说的。是的,当然。如果你有一些处理工作要做,这是有意义的。看看我链接的文章,特别是
AsyncTask
的使用。它提供了比手动创建和管理线程更简单的方法来处理这个问题。我打算在另一个线程的doInBackground中调用一些“new downloaddupdates.execute(fileId)”和“new UpdateNotification.execute()”。developer.android.com没有谈到嵌套,这就是我在这里提出问题的原因。但是现在,既然你认为这是明智的,我就继续。谢谢。实际上对于
AsyncTask
,您必须在UI线程上创建并执行它。您不能在
doInBackground
中执行此操作。请参阅的线程规则部分。哦,是的,我以前在阅读文档时跳过了这一部分。谢谢因此,简而言之,嵌套线程本身是不可能的。该死无论如何,谢谢。我只是想让事情简单一些,提高程序的效率。如果我调用单个线程中的所有方法,那么执行可能会花费太长时间。所以我希望所有的方法同时运行,这样处理时间就更少了。实际上,方法之间没有关系,所以嵌套线程中方法的实现顺序无关紧要。我希望你明白我想说的。是的,当然。如果你有一些处理工作要做,这是有意义的。看看我链接的文章,尤其是