Java多线程Thread和Runnable的区别

时间:2021-03-06 17:35:05

Java多线程中 提供了两种方式来创建线程 


第一种就是Thread  代码如下

package com.bypx.thread;
class DemoTest extends Thread{

@Override
public void run() {
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}

}
public class MyThreadTest {
public static void main(String[] args){
DemoTest test=new DemoTest();//这里要是启动多个线程 输出结果就会乱七八糟 因为线程启动顺序不一样

test.start();

}
}

</pre><pre>

第二种就是 Runnable

<pre name="code" class="java">package com.bypx.thread;

import com.sun.java_cup.internal.internal_error;

class RunnableTest implements Runnable{

public void run() {
// TODO Auto-generated method stub
for(int i=1;i<=9;i++ ){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+" ");
}
System.out.println();
}
}

}
public class MyRunnableTest {
public static void main(String[] args){
Runnable test=new RunnableTest();
new Thread(test).start();



}
}

 

由上面的代码可以知道   Runnable 里面没有提供 start方法启动线程   但是是Thread的子类  所以调用    new Thread(test).start();方法就可以启动线程

它们之间的区别就是    Runnable避免了继承的局限性  因为一个类可以实现多个接口  而不能继承多个类