理解并发和方法调用的区别:
方法的调用就像是排队,只有在其他方法调用完之后主方法才执行完(并不是同时执行);
然而通过run()方法和start()方法才不会有所谓调用的效果出现(程序也就能够并发执行)
代码:
/**
* 第一种方法
* @author LiZhuo
*
*/
public class MyThread extends Thread{//线程类
//线程体
@Override
public void run() {
try {
Thread.sleep(3000);//休眠3秒
} catch (InterruptedException e) {
e.printStackTrace();
}//线程被中断
System.out.println("线程体"+Thread.currentThread().getName());
}
//currentThread
//getName()返回线程的名称
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName()+"主线程开始");
MyThread myth1=new MyThread();//创建线程对象 子线程
MyThread myth2=new MyThread();
//myth1.run();//方法的调用(不能实现并发现象)
//启用线程(start)使该线程开始执行;Java 虚拟机调用该线程的 run方法
myth1.start();
myth2.start();
System.out.println("主线程结束");//互不干扰(实现并发的效果)
}
}
效果:
main主线程开始
主线程结束
(三秒后输出)
线程体Thread-1
线程体Thread-0