Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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
Java 多核处理器上的Android错误_Java_Android_Multithreading_Multicore - Fatal编程技术网

Java 多核处理器上的Android错误

Java 多核处理器上的Android错误,java,android,multithreading,multicore,Java,Android,Multithreading,Multicore,我正在开发一个多线程应用程序,它使用线程和异步任务在多个线程上执行代码 我有一个AsyncTask,它向数据库添加一行,然后发送一个API请求。一旦收到API请求回复,它将更新数据库中的行。数据库适配器对象从UI线程传递给AsyncTask 不幸的是,AsyncTask在多核设备(如Asus Transformer)上不起作用。第一次尝试将行添加到数据库时,会发生空指针异常 我不知道为什么会发生这种情况,但这可能与“记忆可观察性”下的内容有关。谢谢大家的评论 结果证明我确实有比赛条件。我没有意识

我正在开发一个多线程应用程序,它使用线程和异步任务在多个线程上执行代码

我有一个AsyncTask,它向数据库添加一行,然后发送一个API请求。一旦收到API请求回复,它将更新数据库中的行。数据库适配器对象从UI线程传递给AsyncTask

不幸的是,AsyncTask在多核设备(如Asus Transformer)上不起作用。第一次尝试将行添加到数据库时,会发生空指针异常


我不知道为什么会发生这种情况,但这可能与“记忆可观察性”下的内容有关。

谢谢大家的评论

结果证明我确实有比赛条件。我没有意识到onActivityResult是在onResume之前调用的,因此在速度较慢的手机上,可运行任务将在调用onResume之后执行(因此数据库已打开),但在速度较快的手机上,可运行任务将首先到达数据库操作,并与NPE会面


谢谢

请在出现错误的地方发布一些代码,否则我们无法知道发生了什么。除非你做了一些奇怪的事情,否则在多核设备上不会有什么不同。您只处理线程,而vm处理内核。更可能的情况是,您的测试手机速度很快,并且您遇到了在速度较慢的手机上无法满足的竞争条件。如果这有助于缩小问题的范围,我有一部多核手机,并使用AsyncTask在我的应用程序中运行多个并发线程,但没有问题。好吧,假设这是一个竞争条件,a)我应该如何找到这是如何发生的b)竞争条件如何导致NullPointerException?非常感谢你的帮助!如果没有代码,这很难说,但是命中NPE可能是因为使用了一个应该包含尚未创建的对象实例的字段。