据我了解,当我们创建一个时Thread
,我们使用 new 关键字。每当我们想要启动一个 时,就会在一个新对象上start()
调用。Thread
Thread
这让我问一个问题,为什么start()
Java 中有 Thread 类synchronized
。
据我了解,当我们创建一个时Thread
,我们使用 new 关键字。每当我们想要启动一个 时,就会在一个新对象上start()
调用。Thread
Thread
这让我问一个问题,为什么start()
Java 中有 Thread 类synchronized
。
您不能多次启动一个线程。但如果两个线程同时尝试启动同一个线程,情况会更糟。
为什么?
因为这会破坏阻止应用程序启动线程两次的逻辑!
所以......他们声明
start
为synchronized
并且避免了尴尬的竞争条件。我认为您假设线程总是像这样启动:
Thread
但是该语言允许您在一个线程上创建一个并将其传递给启动它的另一个线程。我不知道为什么有人需要这样做,但如果有人没有尝试过,我会感到惊讶。