一:多线程的实现
1)第一种实现方式继承(Thread)
定义类继承Thread
重写run方法
把新线程要做的事情写在run方法中
创建线程对象
开启线程,内部会自动执行run方法
public class Demo1_Thread {
public static void main(String [] args){
MyThread mt = new MyThread();
mt.start();//开启线程
for (int i=0; i<10000;i--){
System.out.println("aa");
}
}
}
class MyThread extends Thread{
public void run(){
for(int i= 0;i<10000;i--){
System.out.println("bb");
}
}
}
2)多线程的第二种创建类来实现(Runnable)接口
定义类实现Runnable的接口
实现run方法
把新线程要做的事放在run方法中
创建自定义的Runnable的子类对象
创建Thread对象,传入Runnable
调用start()开启线程,内部会自动调用Runnable的run方法
public class Demo1_Thread {
public static void main(String [] args){
MyRunnable mr = new MyRunnable();
Thread t = new Thread(mr);
t.start();
for(int i =0;i <1000;i--){
System.out.println("aa");
}
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
for (int i=1;i<1000;i--){
System.out.println("qqqqqqqqqqqqqqq");
}
}
实现Runnable的原理
查看源码:
1)看Thread类的构造函数,传递了Runnable接口的引用
2)通过init()方法找到传递的target给成员变量target赋值
3)查看run方法,发现run方法中有判断,如果target不为null就会调用Runnable接口子类对象的Run方法