1线程简要描述
1.1什么是线程?
线程是程序执行的一条路径。程序可以理解成进程。一个进程可以包含多个线程。多线程并发执行可以提高程序效率,同时完成多个任务。
1.2多线程应用场景
QQ多人视频;迅雷多线程下载;电脑屏幕多人共享;服务器同时处理客户端多个请求。
1.3并行和并发的区别
并行:多个任务同时执行。需要多CPU。
并发:多个任务同时发生。处理器一次只能执行一个任务。而这多个任务是轮流执行的,因为轮流的时间间隔非常的短,给人一种多任务同时执行的错觉。
1.4Java程序运行原理
java命令会启动jvm,相当于启动了一个应用程序或者说是线程。该线程会自动启动主线程。然后主线程调用某个类的main方法。
(一个应用程序只能有一个主线程。主线程不可以new,子线程可以new)
1.5JVM启动是多线程吗?
JVM是多线程,因为JVM的启动至少启动了主线程和垃圾回收线程。
mian方法在主线程(路径)上执行。
finalize()在子线程(垃圾回收线程)上执行。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class A{ 2 // 3 // 4 5 6 7 // 8 }
package p01; public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("aaa"); System.out.println("bbbb"); System.out.println("ccc"); //打印线程名称 System.out.println(Thread.currentThread()); for(int i = 0 ;i < 2; i++){ new Student(); System.gc(); //启动垃圾回收 //调用这个方法的时候,会启用该类中的finalize()方法。 } } } class Student{ /* * 被垃圾级器回收的时候调用一次,对象从内存中释放的时候,调用一次 * 被回收和被释放都会调用。 */ @Override protected void finalize() throws Throwable { System.out.println("学生对象被回收了..."); //打印线程名称 System.out.println(Thread.currentThread()); } }