为什么实现了Runnable 接口就能实现多线程?

xddy 2003-04-04 05:58:00
对这个问题有点迷惑? 个人猜想是JVM对Runnable 接口做了处理。
如果是我想的是对的,那我们自己写的接口除了在设计模式上,还有什么用处?
...全文
149 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyicecream 2003-04-07
  • 打赏
  • 举报
回复
UPUP
  • 打赏
  • 举报
回复
up
jsyx 2003-04-07
  • 打赏
  • 举报
回复
Runnable接口只是一个标记,分离了具体的线程实现类。虚拟机只需要与Runnable类型的对象进行交互。说白了,就是松散耦合。

public synchronized native void start();
是本地方法,大概是用c/c++实现的。这部分原码好象是不公开的
xddy 2003-04-07
  • 打赏
  • 举报
回复
public synchronized native void start()


是怎么写的。
jackal81 2003-04-06
  • 打赏
  • 举报
回复
楼上说的是递归吧,可是那时调用本身的类呀!
在类中的方法调用自己,以实现多线程。
大道如海 2003-04-06
  • 打赏
  • 举报
回复
那我们自己写的接口除了在设计模式上,还有什么用处?


____________________________________________________

昨天看到一篇文章,他用接口在两个类之间进行连接,减少了类之间的依赖程度,
可以更好的进行代码的重用。
mercury1231 2003-04-05
  • 打赏
  • 举报
回复
呵呵,有了run方法,还有什么不能解决的呢?
jsyx 2003-04-04
  • 打赏
  • 举报
回复
已经写得很清楚了

具体线程的初始化,是在public synchronized native void start()这个本地方法中完成的

Runnable接口只是一个类型标记。
xddy 2003-04-04
  • 打赏
  • 举报
回复
我是说为 为什么实现了Runnable 接口就能实现多线程?
jsyx 2003-04-04
  • 打赏
  • 举报
回复
Thread.class类内部定义了一个实例变量,类型为Runnable,如下:
private Runnable target;

默认的run()方法为
public void run() {
if (target != null) {
target.run();
}
}
如果在构造器传入了Runnable对象,并且没有override run()方法的话,就会调用target的run方法。

具体线程的初始化,是在public synchronized native void start();这个本地方法中完成的

因此,Runnable接口只是一个类型标记。

具体你可以读Thread.java的源代码。
blh 2003-04-04
  • 打赏
  • 举报
回复
其实是Thread实体调用你继承Runnable 接口的run方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧