1.继承Thread类实现多线程的格式:
权限修饰符 类名 extends Thread { }
2.实现Runnable接口实现多线程的格式:
权限修饰符 类名 implements Runnable { }
1.通过继承Thread类本身。
2.通过实现Runnable接口。
3.通过Callable和Future创建线程池。
Thread类本身也是实现了Runnable接口来达到开启线程的目的。我们平时开发,通过实现Runable接口来实现多线程。(理由:接口相比类更加轻量,较少许多隐形的问题;Java属于单继承语言,尽量把父类这个位置空出来)。
public class TestDemo01 {
public static void main(String[] args) {
MyThread thread1=new MyThread();
MyThread thread2=new MyThread();
thread1.start();
thread2.start();
}
}
class MyThread extends Thread{
//含义:@Override代表重写父类方法
@Override
public void run(){
System.out.println(" Java 688 ");
}
}
public class TestDemo03 extends Thread{
private Thread t;
private String threadName;
public TestDemo03() {
}
public TestDemo03( String name) {
this.threadName = name;
System.out.println("构造器声明 "+threadName);
}
@Override
public void run(){
System.out.println("运行 "+threadName);
try {
for (int i = 10; i > 0; i--) {
System.out.println("线程名称: " + threadName + ", " + i);
//线程睡眠
Thread.sleep(1000);
}
} catch(InterruptedException e) {
System.out.println(threadName+"中断");
}
System.out.println(threadName+"退出");
}
@Override
public void start(){
System.out.println(threadName+"开始工作");
if (t==null) {
t = new Thread(this,threadName);
t.start();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo03 t1=new TestDemo03("wang-1");
t1.start();
TestDemo03 t2=new TestDemo03("wang-2");
t2.start();
}
}