gpt4 book ai didi

java - 同步方法是否在与 UI 线程 (Android) 不同的线程上运行?

转载 作者:行者123 更新时间:2023-12-01 07:33:16 25 4
gpt4 key购买 nike

第一次在这里发帖提问。刚刚开始编程和编码我的第一个应用程序。

我有一个具有 fetchUpdates() 方法的应用程序类文件:

public synchronized void fetchUpdates() {
String[] mURLs = getURLs();
new DownloadJSONData().execute(mURLs[0], mURLs[1]);
}

DownloadJSONData 是一个 asyncTask,它从服务器获取更新,onPostExecute 方法使用来自服务器的 JSON 数组更新 sqlite 数据库。

应用程序的不同组件(小部件和 Activity )调用此方法从服务器获取更新以更新数据库。

问题:synchronized 方法是否在与 UI 线程不同的线程上运行?如果是这样,将 DownloadJSONData 中的代码移动到同步的 fetchUpdates() 方法应该没有问题,对吧?如果连接到服务器或从服务器下载数据时出现阻塞,它不应该阻塞 UI 线程,对吗?

动机:我试图更改 fetchUpdates() 方法以返回一个 boolean 值,指示数据库是否已更新。但是,现在(我认为) fetchUpdates() 方法在 asyncTaskonPostExecute 方法之前完成,因此 fetchUpdates() 方法无法指示对 DownloadJSONData() 的调用是否更新了数据库。如果数据库在调用后更新,我需要调用 fetchUpdates() 方法的应用组件的行为有所不同。

附注由于我是编程新手,简单而详细的解释会非常有帮助。

谢谢!

最佳答案

不,同步方法在同一线程中运行。但是,在执行另一个同步方法(同一对象的)时,没有其他线程可以执行该方法。

关于java - 同步方法是否在与 UI 线程 (Android) 不同的线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com