程序:指令和数据的有序集合

进程(Process):电脑里面有许多程序,每个程序执行一次就是一个进程,各进程之间是相互独立从存在

线程(Thread):一个进程中可以有若干个线程,一个进程至少有一个线程,线程是cpu调度和执行的单位,同时也是进程的最小执行单位

多线程:有多条执行路径即子线程和主线程并行交替执行,cpu随机调用执行一个线程,程序运行时即使也没有创建线程后台也是多线程的,main()称之为主线程,而且线程会带来额外的开销

线程三大类:Thread,Runnable,Callable

线程五大状态:创建状态,就绪状态,阻塞状态,运行状态,死亡状态

线程对象一旦创建就进入创建状态,当执行start方法就进入就绪状态但不意味着会被立马调用,线程进入运行状态才是真正地被调用,当调用sleep,wait或同步锁定时,线程不往下执行,当阻塞事件解除过后,进入就绪状态等待cpu调度,线程中断或者结束一但进入死亡状态就不能再次启动,一旦创建一个线程对象就表示一个子线程

线程主要方法

setPriorit():更改线程的优先级,注意只是增加了线程被调用的比重,但cpu依然是随机调度的,并不代表一定会比优先级低的线程先调用

sleep():线程类的静态方法,在指定的毫秒数内让当前正在执行的线程进入休眠状态

join():相当于插队插到所有线程的最前面,只有当调用该方法的线程执行完毕,别的线程才能执行‘

yield():礼让线程,Thread类的静态方法,如果该线程正在被cpu调度的话执行了这个方法会暂停,把cpu礼让出来进入就绪线程队列中,和其余线程一样被随机调用

interrupt():中断线程,不建议使用

isAlive():测试线程是否处于活动状态

守护线程:线程分为用户线程和守护线程,虚拟机必须等待用户线程执行完但不需要等守护线程执行完毕

thread.setDaemon(true) //默认为false,正常的线程一般都为用户线程,当该线程为true的时候则为守护线程