Java线程的实现有两种方式:
1 通过继承Thread类来实现。
每个线程都是通过某个特定Thread对象所对应的方法run()l来完成其操作的,方法run()成为线程体。
如果想要启动多线程,则肯定调用start()方法,start方法可以调用被子类覆写过的run方法
不过这种这种实现方式会受到单继承的局限
示例代码:
package com.dr.demo01;
//一个类只要继承了Thread类,则此类就是多线程类
class MyThread extends Thread{
private String name;
public MyThread(String name){
this.name=name;
}
//如果要使用多线程,则必须有一个方法的主体
public void run(){
//打印输出
for(int i=0;i<15;i++){
System.out.println(this.name+"--->在运行、、、");
}
}
}
public class ThreadDemo01{
public static void main(String args[]){
MyThread mt1=new MyThread("线程A");
MyThread mt2=new MyThread("线程B");
MyThread mt3=new MyThread("线程C");
mt1.run();
mt2.run();
mt3.run();
}
}
2 通过实现Runnable接口来实现。
该实现方式有以下好处:
① 适合多个相干同程序代码的线程去处理同一资源的情况。
② 可以避免由于Java单继承特性带来的局限。
③ 有利于程序的健壮性,代码能够被多个线程共享。
示例代码:
package com.dr.Demo05;
class MyThread implements Runnable{
public void run(){
for(int i=0;i<100;i++){
try{
Thread.sleep(1000);
}catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"--运行中--");
}
}
}
public class Demo05 {
public static void main(String[] args) {
MyThread mt=new MyThread();
Thread t1=new Thread(mt,"线程A");
Thread t2=new Thread(mt,"线程B");
Thread t3=new Thread(mt,"线程C");
t1.start();
t2.start();
t3.start();
}
}