【发布时间】:2016-06-02 03:22:36
【问题描述】:
注意:不要同步线程对象的 run() 方法,因为 出现多个线程需要执行 run() 的情况。因为 那些线程试图在同一个对象上同步,只有一个 一次线程可以执行run()。结果,每个线程都必须等待 前一个线程在可以访问 run() 之前终止。
同一个Thread对象的run()如何执行不同的线程?
【问题讨论】:
-
一般来说,如果你看到黄鼠狼的话(“情况出现”),这意味着这篇文章并不是那么好。从上下文中可以清楚地看出,它们确实意味着
Thread类的run(而不是你可能在线程之间共享的Runnable)。在多个线程之间共享Thread实例会非常奇怪,所以我根本没有看到文章中那个标注的意义。 (当然,这也意味着同步run没有多大意义,与 withinrun...的离散工作单元相反) -
@T.J.Crowder 你能说明下同一
Thread对象的Thread::run()是如何被不同的线程调用的吗? -
记住
Thread实现Runnable,Thread的构造函数之一接受Runnable并从Thread的run调用它的run。所以:Thread t1 = new Thread(); Thread t2 = new Thread(t1); t1.start(); t2.start();现在他们都在运行t1的run方法。 -
@TJCrowder,这种奇怪的模式(或类似的东西)可以在许多菜鸟的问题中找到.
标签: java multithreading synchronized java-threads