1.线程创建
这里介绍线程创建常用的五种方法
1.继承Thread,重写run
class MyThread extends Thread{
public void run(){
//这里写的代码就是线程要完成的任务
while (true){
System.out.println("hello thread");
try {
Thread.sleep(1000);//线程会休眠一秒再执行,不休眠会执行得很快
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
public class Demo1 {
public static void main(String[] args) {
Thread t=new MyThread();
// 没有创建出新的线程, 就是在主线程中执行上述 run 中的循环打印.
//t.start();//hello thread 和 hello main 并发执行
t.run();//只有 hello thread
while(true){
System.out.println("hello main");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
start 和 run这两个方法的区别是什么呢?
作用功能不同:
- run方法的作用是描述线程具体要执行的任务;
- start方法的作用是真正的去申请系统线程
运行结果不同:
- run方法是一个类中的普通方法,主动调用和调用普通方法一样,会顺序执行一次;
- start调用方法后, start方法内部会调用Java 本地方法(封装了对系统底层的调用)真正的启动线程,并执行run方法中的代码,run 方法执行完成后线程进入销毁阶段。
调用start方法: 调用run方法: