runnable多线程(关于Runnable接口实现多线程~请求高手帮忙~)

本文目录
- 关于Runnable接口实现多线程~请求高手帮忙~
- 为什么要实现Runnable接口,来实现多线程把Thread作为父类则不能呢
- 如何在java程序中实现多线程使用Thread子类和实现 Runnable借口两种方法有什么异同
- Java多线程初学者指南(3):使用Runnable接口创建线程
- 为什么实现了runnable接口的run方法就能多线程了
- java 多线程 继承Thread和实现Runnable的区别
关于Runnable接口实现多线程~请求高手帮忙~
首先,启动另一个线程有2中方式:
实现runnable接口,然后通过Thread的构造函数把这个类传给Thread
直接继承Thread,重写run方法。
实际启动线程的时候都是条用的Thread的run()
方法1,将自己已经实现Runnable接口的类传给Thread,那么在调用Thread的run的时候,就会调用你传入的Runnale的run()
方法2,因为你没有传run,所以会调用你自己重写的Thread的run()方法
方法1与方法2最大的区别,可能就是方法1采用实现接口的方式,方法2采用继承的方法。因为java不能多继承,所以采用方法2以后,就不能再继承其他类。所以一般推荐使用方法1.
为什么这个strat()函数不是启用Thread匿名对象中的run()函数,Thread匿名对象中不是也有run()函数吗?
其实这个start()就是启用Thread自己的run,请看Thread的源代码:
public void run() {
if (target != null) {
target.run();
}
}
这里的target就是你构造Thread的时候传进来的Runnable对象。所以如果你构造Thread的时候传了一个Runnable,最终start()是会调用该Runnable的run()的。
为什么要实现Runnable接口,来实现多线程把Thread作为父类则不能呢
当然可以,这是是做线程的两个方法
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:
--------------------------------------------------------------------------------
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
--------------------------------------------------------------------------------
然后,下列代码会创建并启动一个线程:
PrimeThread p = new PrimeThread(143);
p.start();
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
--------------------------------------------------------------------------------
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
--------------------------------------------------------------------------------
然后,下列代码会创建并启动一个线程:
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。
如何在java程序中实现多线程使用Thread子类和实现 Runnable借口两种方法有什么异同
第一种:继承Thread类,通过编写线程继承thread类,重写run()方法来实现线程,这个类是在java.lang包中定义的,但是一个类只能继承一个父类,这个方法有这个局限。
第二种:直接实现Runnable多线程接口,Runnable只有一个抽象方法run ,并没有start()方法,也就是说要通过Thread类来启动Runnable实现的多线程。不过这个避免了继承的局限。一个类可以继承多个接口。
Thread类也是Runnable接口的子类。
Java多线程初学者指南(3):使用Runnable接口创建线程
上一篇 Java多线程初学者指南( ) 用Thread类创建线程
实现Runnable接口的类必须使用Thread类的实例才能创建线程 通过Runnable接口创建线程分为两步
将实现Runnable接口的类实例化
建立一个Thread对象 并将第一步实例化后的对象作为参数传入Thread类的构造方法
最后通过Thread类的start方法建立线程
下面的代码演示了如何使用Runnable接口来创建线程
package mythread;public class MyRunnable implements Runnable{ public void run() { System out println(Thread currentThread() getName()); } public static void main(String args) { MyRunnable t = new MyRunnable(); MyRunnable t = new MyRunnable(); Thread thread = new Thread(t MyThread ); Thread thread = new Thread(t ); thread setName( MyThread ); thread start(); thread start(); }}
上面代码的运行结果如下
lishixinzhi/Article/program/Java/gj/201311/27466为什么实现了runnable接口的run方法就能多线程了
你的理解是错的!
你运行一下你实现的run方法看看是不是多线程的。
运行多线程还有个条件:
Thread t = new Thread(new Runnable(){
@Overide
public void run {
}
});
t.start();
Thread 是平台提供的启动线程的特殊类,start方法是Thread对象提供的启动线程的特殊方法。
这样运行平台或操作系统才会把你的代码启动单独的线程运行,运行平台比如java虚拟机依赖操作系统。
java 多线程 继承Thread和实现Runnable的区别
Java中线程的创建有两种方式:
1、 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中
2、 通过实现Runnable接口,实例化Thread类
Runnable
接口只有一个方法 run(),我们声明自己的类实现 Runnable
接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建
Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。
3、继承Thread实现的模式是 定义多个线程,各自完成各自的任务.
4、实现Runnable实现的模式是 定义多个线程,实现一个任务.
总结:一个是多个线程分别完成自己的任务,一个是多个线程共同完成一个任务。其实,在实现一个任务用多个线程来做也可以用继承Thread类来实现,只是比较麻烦,一般我们用实现Runnable接口来实现。

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




