首页 > 新闻系统 > 编程天地 > 文章正文

J2SE综合--有关 JAVA 的多线程浅析

2008-02-13 11:08:56 来源:赛迪网 作者: 点击:
在这个高速信息的时代,商家们纷纷把信息、产品做到Internet国际互连网页上。再这些不寻常网页的背后,要属功能齐全、安全可靠的编程语言,

  
  多线程编程环境用方便的模型隐藏CPU在任务切换间的事实。模型允许假装成有多个可用的CPU。为了建立另一个任务,编程人员要求另一个虚拟CPU,指示它开始用某个数据组执行某个程序段。下面我们来建立线程。 
  
  建立线程 
  
  在JAVA中建立线程并不困难,所需要的三件事:执行的代码、代码所操作的数据和执行代码的虚拟CPU。虚拟CPU包装在Thread类的实例中。建立Thread对象时,必须提供执行的代码和代码所处理的数据。JAVA的面向对象模型要求程序代码只能写成类的成员方法。数据只能作为方法中的自动(或本地)变量或类的成员存在。这些规则要求为线程提供的代码和数据应以类的实例的形式出现。 
  
Public class SimpleRunnable implemants Runable{ 
Private String message; 
Public static void main(String args[]){ 
SimpleRunnable r1=new SimpleRunnable(“Hello”); 
Thread t1=new Thread(r1); 
t1.start(); 

public SimpleRunnable(String message){ 
this.message=message; 

public void run(){ 
for(;;){ 
System.out.println(message); 


  
  线程开始执行时,它在public void run()方法中执行。这种方法是定义的线程执行的起点,就象应用程序从main()开始、小程序从init()开始一样。线程操作的本
地数据是传入线程的对象的成员。 
  
  首先,main()方法构造SimpleRunnable类的实例。注意,实例有自己的数据,这里是一个String,初始化为”Hello”.由于实例r1传入Thread类构造器,这是线程
运行时处理的数据。执行的代码是实例方法run()。 
  
  2.2 线程的管理 
  
  单线程的程序都有一个main执行体,它运行一些代码,当程序结束执行后,它正好退出,程序同时结束运行。在JAVA中我们要得到相同的应答,必须稍微进行改动。只有当所有的线程退出后,程序才能结束。只要有一个线程一直在运行,程序就无法退出。线程包括四个状态:new(开始),running(运行),wait(等候)和done(结束)。第一次创建线程时,都位于new状态,在这个状态下,不能运行线程,只能等待。然后,线程或者由方法start开始或者送往done状态,位于done中的线程已经结束执行,这是线程的最后一个状态。一旦线程位于这个状态,就不能再次出现,而且当JAVA虚拟机中的所有线程都位于done状态时,程序就强行中止。当前正在执行的所有线程都位于running状态,在程序之间用某种方法把处理器的执行时间分成时间片,位于running状态的每个线程都是能运行的,但在一个给定的时间内,每个系统处理器只能运行一个线程。与位于running状态的线程不同,由于某种原因,可以把已经位于waiting状态的线程从一组可执行线程中删除。如果线程的执行被中断,就回到waiting状态。用多种方法能中断一个线程。线程能被挂起,在系统资源上等候,或者被告知进入休眠状态。该状态的线程可以返回到running状态,也能由方法stop送入done状态, 
方法 
描述 
有效状态 
目的状态 
Start() 
开始执行一个线程 
New 
Running 
Stop() 
结束执行一个线程 
New或running 
Done 
Sleep(long) 
暂停一段时间,这个时间为给定的毫秒 
Running 
Wait 
Sleep(long,int) 
暂停片刻,可以精确到纳秒 
Running 
Wait 
Suspend() 
挂起执行 
Running 
Wait 
Resume() 
恢复执行 
Wait 
Running 
Yield() 
明确放弃执行 
Running 
Running 
9 7 3 1 2 3 4 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203