Java Volley API是线程安全的吗?

Java Volley API是线程安全的吗?,java,android,multithreading,android-volley,Java,Android,Multithreading,Android Volley,在Android Volley API中,我需要将一些请求对象放入请求队列中,该对象将接收响应 这个线安全吗?如果多个线程试图访问队列并检索结果,会发生什么情况?Volley API是线程安全的。所有响应都在主线程上调度,任何线程都可以对请求进行排队。不知道你在说什么;) 取决于队列。有些队列是线程安全的,有些则不是。我想你的问题需要更多的细节,也许是一个假设的情况来讨论。@nmr我想他是指RequestQueue,它是凌空库的一部分,我在那里没有找到任何其他Queue。如果是这样,那么这个问题

在Android Volley API中,我需要将一些请求对象放入请求队列中,该对象将接收响应


这个线安全吗?如果多个线程试图访问队列并检索结果,会发生什么情况?

Volley API是线程安全的。所有响应都在主线程上调度,任何线程都可以对请求进行排队。不知道你在说什么;)

取决于队列。有些队列是线程安全的,有些则不是。我想你的问题需要更多的细节,也许是一个假设的情况来讨论。@nmr我想他是指
RequestQueue
,它是凌空库的一部分,我在那里没有找到任何其他
Queue
。如果是这样,那么这个问题对我来说就没有意义了。请求队列不“接收响应”。我想他可能指的是另一个队列,响应被发布到该队列。@nmr:是的,我指的是请求队列。从示例中,我看到队列中的请求通过请求方法检索结果。如果线程A和线程B调用的函数最终在队列中添加了两个请求对象,那么每个线程如何知道哪个响应属于该线程?根据我在教程中看到的示例,响应由队列中的对象通过Request.onResponse进行处理。那么onResponse代码如何知道收到的响应是针对该线程的呢?我的意思是,如果你发送请求X,然后在网络中请求Y,你可以在X的响应之前得到Y的响应。现在这更清楚了吗?也许我是android新手这一事实并不能帮助我用凌乱的语言表达我的困惑,这些回答并不“属于”线程“A”和“B”。响应通过
#onResponse
方法传递到构建请求的
Response.Listener的实例。这总是发生在主线程上。你所说的主线程是指主启动的活动吗?但是,如果我们在用户在UI中执行其他操作时启动后台线程来获取一些数据,该怎么办?在这种情况下,线程A将把JSON请求A和线程B JSON请求B作为两个独立请求对象的一部分传递给请求队列。响应侦听器在被调用时必须“知道”如何处理每个响应,因为每个响应的处理方式可能不同,并且响应可能以不同的顺序返回。这不是一个有效的场景吗?我所说的主线程是指Android UI线程,它是调用
活动#onCreate
的线程,我想这就是你的意思。不要搞错了,如果您有两个请求,“A”和“B”,为了区分它们的响应,您应该在创建请求时使用两个单独的响应侦听器。