wlei0247@gmail.com

JAVA的线程状态

java中的线程状态很重要,在后续多线程编程中经常用到,理解线程状态的目的就是方便对代码进行调试。如果线程卡住了,就可以调出线程的状态,看是哪里发生了阻塞或者等待。所以可以说不了解线程的状态,就没法灵活运用多线程编程。 通过下面两个程序来学习线程的状态: 上面的程序在thread线程里面有一个for循环,可以看到再开始运行线程之前线程的状态为NEW,线程运行起来后线程的状态变味了RUNNABLE,最终当线程运行结束以后线程的状态变为TERMINATED 。后面会依次介绍这些状态的基本含义。 通过jconsole可以发现,线程t1的状态为TIMED_WAITING而t2的状态为BLOCKED。 将上面的代码里面的修改一下,把t1的sleep换成wait 可以看到t1线程状态变为了WAITING,而t2线程已经没了,打印输出了“你好” 通过上面的代码操作,我们来总结一下java中的状态: JAVA中线程的状态  一:NEW状态 这个状态表示新创建了一个线程对象。 二:RUNNABLE状态 线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权,即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。 三:TERMINATED状态 终止状态,当线程结束之后就会进入此状态 四:TIMED_WAITING状态 表示当前的线程在阻塞队列中等待,这样的等待是一个带有结束时间的等待。Thread.sleep这个方法就会触发这个操作 五:WAITING状态 程序中如果调用了wait方法,会阻塞等待,此时的waiting状态会死等,除非其他线程唤醒了该线程 六:BLOCKED状态 当前线程尝试进行加锁,但是锁已经被其他线程占用了,此时该线程就会阻塞等待,直到其他线程释放锁之后才能被唤醒 线程状态之间的转换

JAVA的线程状态 Read More »

线程和进程

一:进程 1.进程的概念 进程是程序的一次执行过程,是操作系统分配资源的基本单位。进程在电脑上就是一个个运行的软件,比如QQ、微型等。 2.进程控制抽象块(PCB) 每个进程控制块如图 所示,它包含许多与当前进程相关的信息: 3.CPU的进程调度 (1)进程的优先级:进程的优先级是指根据任务的重要性或紧急性给进程排序,重要的需要及时处理的优先级高,CPU就优先处理,相反的则CPU后处理。 (2)进程的状态:进程可以有很多状态,但大致分为两类:就绪状态和阻塞状态,就绪状态是指进程是准备就绪的,随时都可以上CPU;阻塞状态是指进程等待某个任务完成或资源分配到位以后才能让CPU执行。 (3)进程的记账信息:操作系统在为进程安排时间的时候,避免有些进程时间安排的太少或根本就没有分配时间,所以记录每个进程的执行时间。 (4)进程的上下文: 进程在调度的时候,被调出进程的寄存器状态会被保存在PCB中 4.进程的内存分配 操作系统对系统资源的分配,采用的是空间模式,不同的进程使用内存中不同的区域,互相之间互不干扰。 5.进程之间的通讯 主要有管道、共享内存、文件、网络等 二:线程 1.线程的概念 线程:一个线程就是一个执行流,一个进程中包含多个线程,每个线程并发执行分别完成不同的任务,它是操作系统调度的最小单位。 2.为什么要有线程 因为现在的电脑处理多个任务就需要并发执行,为了解决并发执行就需要并发编程,虽然进程也能实现并发编程,但是创建进程和释放进程需要分配资源,比较消耗时间,创建进程以后,多个线程共享一份系统资源,所以只需要进程加载一次系统资源,线程共同利用这一份资源即可,系统不必在为每个线程再分配系统资源,从而大大降低了资源的开销。 总结上面就是线程的资源开销比进程小。 3.进程和线程之间的关系 1.一个进程包含多个线程,如果把进程比作工厂,那么线程就是工厂中的流水线 2.每个进程有独立的虚拟空间,也有自己独立的文件描述表;同一个进程的多个线程之间,则共用这一份虚拟地址空间和文件描述表 3.进程是操作系统中资源分配的基本单位,线程是操作系统中执行调度的最小基本单位 4.多个进程同时执行的时候,如果一个进程挂了,一般不会影响到别的进程,同一个进程内的多个线程之间,如果一个线程挂了,很可能把整个进程都带走。 看一段程序来加上进程和线程的理解: 上面的整个程序就是进程,进程里面包含了多个线程,在上面就包含了main线程和thread线程。关于多线程会在将来的文章中详细将。 拓展——操作系统 一.操作系统的概念 :操作系统是一组做计算机软硬件管理的计算机系统软件,功能是为上层用户、应用程序提供简单易用的服务。 二:操作系统的功能和目标操作系统的核心功能:对下要管理各种硬件设备,对上要给各种软件提供稳定的运行环境作为系统资源的管理者需要提供处理机管理、存储器管理、文件管理、设备管理等;作为用户与计算机之间的接口需要提供命令接口、层序接口、图形用户接口(GUI);作为最近接硬件的层次是一种硬件的扩充机器; 三:操作系统的特征并发性:指两个或多个事件同一时间间隔发生,这些时间宏观上是同时发生的,但是微观上是交替发生的(区别并行:并行是指多个时间同一时刻同时发生);共享性:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用;这里的资源共享有两种共享方式:互斥共享(系统资源同一时间只允许一个进程访问该资源)、同时共享(允许一个时间段内有多个进程”同时”对他们进行访问);虚拟性:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是是实际存在的,逻辑上的对应物是用户感受到的;异步性 :是指多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预测的速度向前推进,这就是异步性 四:操作系统的分层图

线程和进程 Read More »