多线程其中两种方法实现Thread类(还有两种没学到)
第一种继承Thread类
只有Thread类里面的start方法,产生子线程
//继承类
public class myThread extends Thread {
public void run() {//线程实体
System.out.println(Thread.currentThread().getName()+"正在运行");
}
}
//测试类
package xiancheng;
public class xc {
public static void main(String[] args) {
myThread p=new myThread();//建了一个对象
myThread p1=new myThread();
myThread p2=new myThread();
//p.run();//不能这么写
p.start();//产生了子线程,等待操作系统,就是产生再放到里面,在寻找执行
p1.start();
p2.start();
new myThread() {
public void run() {
System.out.println(Thread.currentThread().getName()+"执行");
}
}.start();
new Thread() {//匿名内部类
public void run() {
System.out.println(Thread.currentThread().getName()+"执行");
}
}.start();
System.out.println(Thread.currentThread().getName()+"正在运行");
}
}
第二种实现Runnable接口
2,通过实现Runnable接口实现多线程,Runnable接口是系统定义的,产生子类线程
//继承Runnable接口
package xiancheng;
/*
* 2,通过实现Runnable接口实现多线程,Runnable接口是系统定义的,产生子类线程
*/
public class myThreadj implements Runnable {
public void run() {
System.out.println(Thread.currentThread().getName()+"正在运行");
}
}
//测试类
package xiancheng;
public class xcj {
public static void main(String[] args) {
myThreadj p=new myThreadj();
Thread t=new Thread(p);//把自定义Runnable接口类的对象作为Thread(p)类
Thread t1=new Thread(p);
Thread t2=new Thread(p);
//p.start(); //只有Thread里面才能实现start
t.start();
t1.start();
t2.start();
new Thread(p).start();//将myThreadj实现匿名内部类
new Thread(new Runnable() {//实现匿名内部类
public void run() {
System.out.println(Thread.currentThread().getName()+"正在运行");
}
}).start();
System.out.println(Thread.currentThread().getName()+"正在运行");
}
}
(以上知识可能存在问题,希望在评论区纠正,我定会更改)