线程的基本概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源。
进程和线程的关系:- 多个进程的内存是隔离开的,一个进程中的多个线程,可以共享内存(进程包含线程)
- 进程是系统分配资源的最小单位;线程是cpu执行的最小单位
- 线程的创建,销毁代价比进程小(状态转换进程的开销大于线程)
- 线程(有bug)可能会造成整个系统崩溃;线程间是独立运行(可能存在线程通信)
创建线程的方式:1.继承Thread;2.实现Runnable接口:实现Runnable,重写Runnable的run方法;3.实现Callable接口
Thread t3=new Thread(new Runnable() {
@Override
Public void run() {
System.out.println("匿名内部类run");
}
});
t3.start();
线程的启动:thread.start() 申请系统调度,执行thread中的任务(重写的run方法)
main方法执行,也是存在一个main线程的
- 执行java.exe进程,分配内存
- 创建java虚拟机,执行StartVsRun类加载
- 创建一个main线程,执行StartVsRun.main()
main线程创建Thread的代码,没有执行run
Thread中,start()和run()有什么区别?
- start:属于线程的方式
- run:属于线程任务的描述
线程的属性
设置线程的名称:new Thread(Runnable 任务描述对象,String线程名称)
设置后台线程:thread.setDaemon(true)
//Java进程,至少有一个非后台线程(用户线程)存货,进程才不会退出
System.out.println(t.getName());//获取线程名称 System.out.println(t.getState());//获取线程状态 System.out.println(t.isAlive());//是否存活:启动后销毁前都是存活



