利用对象,将一个程序分割成相互独立的区域。我们通常也需要将一个程序转换为多个独立运行的子任务。
想这样的子任务都叫做一个”线程“(Thread)。编写程序时,可将每个线程都想像成独立运行,而且都有自己的专用CPU。一些基础的机制实际会为我们自动分割CPU的时间。我们通常不必关心这些细节问题,所以多线程的代码编写时相当简便的。
这时理解一些定义对以后的学习,很有帮助。“进程”是指一种“自包容”的运行程序,有自己的地址空间。“多任务”操作系统能够同时运行多个进程 -- 但实际是由于CPU分时机制的作用,使每个进程获取自己的CPU时间片。但是由于轮换速度非常快,使的所有的程序好像是在“同时“运行一样。”线程“是进程内部单一的一个顺序控制流。因此,一个进程可能容乃了多个同时执行的线程。
多线程的应用范围很广。但在一般情况下,程序的部分特定的事件或资源联系在一起,同时又不想为它而暂停程序的其他部分的执行。这样一来,就可以考虑建一个线程,令其与那个事件或资源相关联到一起,并让他独立于主程序运行。一个人很好的例子便是”quit“或”退出“按钮 -- 我们并不希望程序的每一个部分代码中都能轮询到这个按钮,同时又希望该按钮能够及时地做出响应(使程序看起来似乎经常都在轮训它)。事实上,多线程最主要的用途就是构建一个”反应灵敏”的用户界面。
-------------------------------------- from《think in java 》 multithreads
首先新建一个Thread
new Thread(task).start()
线程也有优先级 通过 thread.setPriority() Thread int 型常量有:
Thread.MIN_PRIORITY Thread.NORM_PRIORITY Thread.MAX_PRIORITY
java 虚拟机总是选择这当前优先级最高的可运行线程 资源竞争或资源缺乏(contention or starvation),高优先级的或相同优先级的线程不退出,有些线程就无法运行。高优先级的程序必须定时调用sleep() or yield() 来给低优先级或相同优先级的线程运行机会。
。