11.1.3 多线程
并行处理(concurrently)在我们日常生活中常常进行着,人的血液循环与人的呼吸、行走、愤怒能同时发生。人们的视听言行也可能同时进行,比如,我们可以一边上网,一边听音乐,一边与人聊天等都是平行处理的例子,程序语言Java当然也有这种能耐,提供并行处理的机制。
线程(thread)为程序进程(process)里单一而连续的控制流程,就像线一样有头有尾,故称为线程。一般的程序只有一个线程,但Java程序允许多个线程同时执行,称为多重线程(multi-thread)。线程是一种新颖而有力的设计技巧,因为多处理器技术和主从结构计算机的日渐普及而更受重视,也可以说线程是一种无法避免的程序设计方向。
一般的Java程序中只有一个main线程,称为单线程执行模式。但Java的虚拟机器允许一个应用程序拥有许多个线程同时执行。
每个线程都有一个优先值(priority),优先值较高者较先执行。当java虚拟机器开始执行时,通常只有一个非daemon的线程在执行着,一般指类中的main方法而言,虚拟机器继续执行线程,直到下列情况之一发生为止。
1.Runtime类的exit()方法被调用且经安全管理员同意者。
2.所有非daemon线程都已中断。Run()结束或执行stop()方法。
Java的线程属于轻量级进程,它是进程中的一段程序代码,它抛弃了环境和资源的包袱,与其他线程共享进程中的资源。多重线程的进程分享系统资源却没有额外负担,Java掌握了这个趋势,聪明地提供多重线程的功能,创意不错。