社区
Java SE
帖子详情
为什么实现了Runnable 接口就能实现多线程?
xddy
2003-04-04 05:58:00
对这个问题有点迷惑? 个人猜想是JVM对Runnable 接口做了处理。
如果是我想的是对的,那我们自己写的接口除了在设计模式上,还有什么用处?
...全文
149
11
打赏
收藏
为什么实现了Runnable 接口就能实现多线程?
对这个问题有点迷惑? 个人猜想是JVM对Runnable 接口做了处理。 如果是我想的是对的,那我们自己写的接口除了在设计模式上,还有什么用处?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cyicecream
2003-04-07
打赏
举报
回复
UPUP
乡野村夫卍宸昊
2003-04-07
打赏
举报
回复
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方法
Java并发编程系列02:
实现
Runnable
接口
方式
实现
多线程
1、
实现
Runnable
接口
方式
实现
多线程
与继承Thread类相比,
实现
Runnable
接口
的MyThread类在结构上与之前是没有区别的,但是有一点是有严重区别的,如果继承了Thread类,那么可以直接继承start()方法,但是
实现
Runnable
接口
是没有start()方法的。不管何种情况下,如果要启动
多线程
一定要依靠Thread类完成。 如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须
实现
一个
Runnable
接口
,如下: 1.1定义Runna
实现
Runnable
接口
实现
多线程
(龟兔赛跑代码示例)
1.怎样
实现
Runnable
接口
实现
多线程
: 1.创建一个类声明是
实现
了Runable的
接口
2.
实现
run()方法,编辑执行体 3.创建线程对象,调用start()方法启动线程 2.继承Thread与
实现
Runnable
接口
的区别: 继承Thread启动线程:子类对象.start()
实现
Runnable
启动线程:传入目标对象+Thread对象.start() 3.比起Thread更推荐使用
Runnable
的原因: 避免了单继承的局限性(Thread只能单继承),灵活方便,方便同一个对象,
多线程
中继承Thread 类和
实现
Runnable
接口
的区别
网上看了很多
多线程
里继承Thread 类和
实现
Runnable
接口
的区别,感觉不是很清晰,说下我的观点吧 区别一 创建线程的方式不同:
实现
Runnable
接口
是代理模式,交给Thread()类去start; 如:new Thread(new My
Runnable
(),"线程名").start(); 一个类继承Thread类以后本身就是一个线程对象,可以直接start; 如:new MyThread().satrt(); 区别二 设置线程名方式不同
实现
Runnable
接口
可以在创建线程时T
Java
多线程
--创建
多线程
的基本方式二:
实现
Runnable
接口
Java
多线程
--创建
多线程
的基本方式二:
实现
Runnable
接口
通过
实现
Runnable
接口
实现
多线程
在JAVA中不允许多继承,即一个子类只能有一个父类,因此如果一个类已经继承了其他类,那么这个类就不能再继承Thread类。此时,如果一个其他类的子类又想采用
多线程
技术,那么这时就可以用到
runnable
接口
,来创建线程,我们知道,一个类可以继承多个
接口
的,而这就间接的
实现
了多继承。 通过
Runnable
接口
,
实现
多线程
的语法如下。 class 类名称 implements
Runnable
{ 属性 方法 public void run(){ 程序代码 } } 注意,激活一个新线程,需要使用Thread类中
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章