我正在做一些并发编程,其中一部分困扰着我。
假设我有一些类Foo
扩展了 Thread 并实现了它自己的公共方法bar()
以及所需的run()
方法。如果我实现多个Foo
对象,每个对象都包含对另一个Foo
对象的引用,并且在类的run()
方法内部是对它所引用的任何对象Foo
的方法的调用。如果名为“ ”的对象调用了名为“ ”的对象,那么究竟是谁在执行“ ”中的方法代码?执行是从“ ”移交给“ ”执行还是“继续执行”中的代码bar()
Foo
Foo
Thread-1
bar()
Foo
Thread-2
Thread-2
Thread-1
Thread-2
Thread-1
Thread-2
”?如果是第二选择,我怎么能让它表现得像第一选择?