我正在开发一个Android应用程序,需要进行多个网络请求。我希望所有这些请求按照它们到达的顺序依次处理,我的下面的代码可以实现吗?
根据我的阅读和理解,synchronized关键字的作用是,在我启动的所有线程中,只有一个线程可以进入以下任何一个方法。例如,如果用户在一个线程中尝试postPhoto,然后立即在另一个线程中尝试getData,则getData线程将不得不等待postPhoto线程完成后才开始获取数据。由于我所有的网络请求都通过这个类并且所有的方法都是同步的,那么它们基本上就是排队的,对吗?
public class Controller {
public synchronized static String getData(String url, String limit) { ... }
public synchronized static String postPhoto(String filepath, int server_id) { ... }
public synchronized static InputStream getPhoto(String thumbnailPath) { ... }
public synchronized static String createIncident(String name, String description) { ... }
public synchronized static String updatePerson() { ... }
synchronized static boolean verifyConnection(String response) { ... }
}
编辑:
我可能应该提到,尽管上述某些方法被称为createIncident或updatePerson,但它们都只是发起http请求。所有这些方法内部的代码基本相同,除了一些重要的小变化。在我的代码的其他部分中,我会启动线程来调用这些方法,这就是我问的部分。因为这些线程在调用这些方法,所以B线程调用getData时必须等待A线程完成postPhoto的一部分。