进程:当计算机在正常工做时,你在计算机中打开的多个程序,这其中每一个程序就至关于一个进程,CPU分别给他们分配时间片,轮到哪一个程序的时间片时,CPU就去处理他,由于CPU运算速度很是快,因此咱们会认为程序是同时运行,但实际上CPU是轮流处理相应程序的时间片的,咱们能够认为这个是并发的过程。多线程
线程:线程是存在于进程中的,一个进程能够包含多个线程。并发
线程不是越多越好,由于调用线程也要耗费时间的,若是一个任务执行时间较长那么可使用多线程,若是一个任务执行时间很短,那么就使用多线程就得不偿失了。spa
通常而言CPU有几个内核那么就表明有几个线程。线程
(单核CPU)并发:当CPU在执行一个任务时候,此时有一个新的任务进来时,CPU会分配给两个任务时间片,轮流执行两个任务,JAVA就是支持并发的。进程
(多核CPU)并行:当一个CPU有两个或两个以上内核时,那么CPU能够一个线程执行一个任务,这样的两个任务真正的同时进行被称为并行。资源
串行:当系统在执行一个任务时,此时又新增长一个任务,那么系统执行完当前任务后才会执行下一个任务,这样被称为串行。it
线程总共有七种状态循环
sleep方法和notify的区别,sleep方法不会释放CPU资源,但wait方法会释放出CPU资源。yield
sleep方法结束后线程继续往下执行,但wait方法的话须要有notify来唤醒,以后从新进入就绪阶段。程序
线程在执行任务时,当该任务须要花较多时间时,此时称为阻塞状态。
通常当IO执行读取任务时,遇到大文件须要较长时间处理任务此时IO处于阻塞状态。
run方法和start方法的区别在于调用start方法时线程处于等待就绪状态,而run方法则是指当CPU处理该线程时候会执行线程中的run方法。
线程的加入使用join方法,指在A线程中插入B线程并要求系统先执行B线程,等B线程结束后再执行A线程。
线程的中断咱们通常使用三种方法
1 stop该方法是比较旧的方法如今已经不推荐使用。
2 使用死循环而后设置相应的标记当知足条件时跳出循环。
3 interrupt方法
yield方法是该线程先让出CPU资源让其余线程先处理,本身重回就绪状态等待CPU下次执行它。