Thread是类Runnabe是接口。
所有Thread可以通过继承来获得,Runnabe要通过实现类来获得。
Runnabe
package ldb0715.night.demo02;
public class TestMyRunnabe {
public static void main(String[] args) {
MyRunnabe mr = new MyRunnabe();
Thread t1 = new Thread(mr,"子线程1");
Thread t2 = new Thread(mr,"子线程2");
t1.start();
t2.start();
for (int i = 0; i < 50; i++) {
System.out.println("==主线程id:"+Thread.currentThread().getId()+"===主线程名称:"+
Thread.currentThread().getName()+"===="+i+"======");
}
}
}
package ldb0715.night.demo02;
public class MyRunnabe implements Runnable {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("--子线程id:"+Thread.currentThread().getId()+"---子线程名称:"+
Thread.currentThread().getName()+"-----"+i+"-----");
}
}
}
Thread
package ldb0715.night.demo01;
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 50; i++) {
System.out.println("---子线程id:"+Thread.currentThread().getId()+"---子线程名称:"
+Thread.currentThread().getName()+"-----"+i+"-----------");
}
}
}
package ldb0715.night.demo01;
public class Demo01 {
public static void main(String[] args) {
/**
* 1.使用Thread 创建线程,使用start()方法运行
*/
MyThread mt = new MyThread();
mt.setName("这是我的子线程");
mt.start();
for (int i = 0; i < 50; i++) {
System.out.println("===主线程id:"+Thread.currentThread().getId()+"===主线程名称:"
+Thread.currentThread().getName()+"====="+i+"===========");
}
}
}
用匿名内部类实现
package ldb0715.night.demo02;
public class TestMyRunnabe2 {
public static void main(String[] args) {
//Thread t1 = new Thread(mr,"子线程1");
//mr相当于==>new Runnable()
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto=generated method stub
for (int i = 0; i < 50; i++) {
System.out.println("==子线程id:"+Thread.currentThread().getId()+"==子线程名称:"
+Thread.currentThread().getName()+"===="+i+"===");
}
}
},"我的子线程1");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto=generated method stub
for (int i = 0; i < 50; i++) {
System.out.println("==子线程id:"+Thread.currentThread().getId()+"==子线程名称:"
+Thread.currentThread().getName()+"==="+i+"====");
}
}
},"我的子线程2");
//调用线程 只有通过Thread对象才可以调用
t1.start();
t2.start();
for (int i = 0; i < 50; i++) {
System.out.println("==主线程id:"+Thread.currentThread().getId()+"==主线程名称:"
+Thread.currentThread().getName()+"==="+i+"====");
}
}
}