多线程学习
1、线程概述 进程:运行在自己的地址空间之内的自包容的程序,是一个动态执行的过程。 比如我打开记事本写一个.txt文件这个过程是一个进程;打开eclipse写一个程序这个过程是一个进程;运行这个程序也是一个进程; 人跑50m短跑这个过程也可以说是一个进程。 线程:是比进程更小的执行单位,是一个个独立的子任务,一个线程就是在进程中的一个的单一的顺序控制流。 比如运行一个.java文件时,主线程就是立刻启动运行;50m短跑的一个同学是一个线程;比赛100m x 4 这个过程是一个进程,这个进程给参赛的4位同学都分配了任务(每位同学跑100m)。 从上我们可以看到 进程之间相互隔开,互不影响,彼此不干涉的 ;而 同一个进程之间的线程之间时共享资源的 (接力赛的接力棒), 线程之间的执行顺序也是不确定的 ,在这个100 x 4 比赛中,每个同学跑第几棒是不确定的,顺序是由leader(这里我们假设是班主任)来确定的,此时班主任担任的就是一个CPU在分配资源的角色。 多线程:顾名思义就是一个进程中有多个线程。 java的线程机制是抢占式,这表示调度机制会周期性地中断线程,讲上下文切换到另一个线程,从而为每个线程都提供时间片,使得每个线程都分配到数量合理的事件驱动它的任务。 注意: 多线程是不能提高运行效率的,相反的在单处理器上还会降低一些运行效率