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避免了继承的局限性 因为一个类可以实现多个接口 而不能继承多个类