<p>我认为这个问题对于CPython <a href="https://stackoverflow.com/questions/17682484/is-collections-defaultdict-thread-safe">here</a>和<a href="https://stackoverflow.com/questions/6319207/are-lists-thread-safe">here</a>来说已经得到了很好的回答(基本上,因为GIL,您是安全的,尽管文档中没有正式提到这一点(比如on <a href="https://docs.python.org/2/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">defaultdict</a>或<a href="https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange" rel="nofollow noreferrer">list</a>)。但我理解您对Jython的担心,所以让我们使用一些官方来源来解决它,比如<a href="https://hg.python.org/jython/" rel="nofollow noreferrer">Jython source code</a>。一个Python<code>list</code>就是一个<a href="https://hg.python.org/jython/file/tip/src/org/python/core/PyList.java" rel="nofollow noreferrer">javaish ^{<cd2>}</a>,上面有这样的代码:</p>
<pre><code>public void append(PyObject o) {
list_append(o);
}
final synchronized void list_append(PyObject o) {
...
}
public PyObject pop(int n) {
return list_pop(n);
}
final synchronized PyObject list_pop(int n) {
...
}
</code></pre>
<p>由于我们有这些方法<a href="https://stackoverflow.com/questions/1085709/what-does-synchronized-mean">synchronized</a>,所以我们可以确保列表附录和pop在Jython中也是线程安全的。因此,您的代码似乎是安全的wrt线程。在</p>
<p>尽管<code>Queue</code>建议仍然有效,但它确实更适合这个用例。在</p>