【发布时间】:2014-05-01 19:08:52
【问题描述】:
public class Qn {
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
// recipient - the person who greets
public synchronized void sayHi(Friend recipient) {
System.out.format("%s" + " said hi to %s %n",
this.name, recipient.getName());
}
}
public static void main(String[] args) {
final Friend john = new Friend("John");
final Friend peter = new Friend("Peter");
new Thread(new Runnable() {
public void run() {
john.sayHi(peter);
}
}, "thread1").start();
}
}
问题:
如果理解正确,请澄清以下内容
在调用
john.sayHi()时,线程thread1获得了内在的 锁定john对象,以便访问john对象的sayHi()方法。线程
thread1在JVM中独立运行。
我在网上阅读了这些声明,不知道它们是什么意思! 【线程怎么可能在对象上运行!!! Infact 线程执行代码,对吗?]
线程
thread1没有在 JVM 内的任何其他对象上运行。线程永远不会在任何对象上运行。线程永远不会被对象执行。 一个线程永远不会在任何其他线程上运行。线程总是直接在 JVM 中运行。
【问题讨论】:
-
静态类朋友{,类不能是静态的。
-
@Mr.Pandey 内部类当然可以是静态的
-
Re“在JVM中独立运行”。独立于什么?
-
@Mr.Pandey 你为什么这么认为?你听说过nested classes吗?
-
@user3580294:哎呀!是的,确实。
标签: java multithreading