快速业务通道

Java多线程编程初步 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
直接执行命令:java PrintThread。

实现java.lang.Runnable接口

运行线程的另一种方法是实现Runnable接口,然后生成运行这个类的线程即可。Runnable接口是定义在java.lang包中的一个接口,其中只提供了一个抽象的run声明。

下面我们来看看如何实现Runnable接口,而不是扩展Thread类。

//PrintRunnableThread.java 实现Runnable接口 public class PrintRunnableThread implements Runnable public static void mainString args  Thread t=new Threadnew PrintRun nableThread   //t.setPriorityThread.MAX_PRIORI TY //设置最大优先级 t.start //线程开始 for{;;} //不停地打印字符M,代表主线程main System.out.println″M″   public void run  for{;;} //不停地打印字符T,代表线程thread System.out.println″T″ 

运行本程序,你会发现执行结果和PrintThread.java的执行结果很类似,甚至你可以再添加一个变量,并打印出相似的线程执行结果。

提示:与前例不同的是,如果去掉t.setPriorityThread.MAX_PRIORITY 语句前的注释符,就将线程设置成最大优先级,执行结果就大不一样了。

线程组ThreadGroup

java.lang.ThreadGroup类表示一组线程(可能包含其它ThreadGroup),用来实现按照特定功能对线程进行集中式分组管理。用户创建的每个线程均属于某线程组,这个线程组可以在线程创建时指定,也可以不指定线程组以使该线程处于默认的线程组之中。但是,一旦线程加入某线程组,该线程就一直存在于该线程组中直至线程终止,不能在中途改变线程所属的线程组。

下面的代码演示了如何操作和使用ThreadGroup。

//ThreadGroupTest.java public class ThreadGroupTest implements Runnabl e public void run   public static void main(String args[])  //生成一个新的线程组,并将两个线程对象放到该线程组里。 ThreadGroup threadgroup=new ThreadGroup″线程组″  Thread t1=new Threadthreadgroupnew ThreadGrou pTest ″线程 1″  Thread t2=new Threadthreadgroupnew ThreadGrou pTest ″线程 2″  //找到顶级的父线程 ThreadGroup parent=Thread.currentThread .getThrea dGroup //得到当前线程的线程组 whileparent.getParent =null   parent=parent.getParent //得到父线程  //list 方法打印出当前线程组的所有内容线程和子线程组  parent.list 

提示:上段程序中,list()方法显示ThreadGroup树(可能包括线程和线程组,所以构成了线程树)的结构和内容。运行上面程序你就会对线程组有了一定的了解。

Java多线程编程初步(3)

时间:2007-11-05

线程优先级

虽然我们说线程是并发运行的。然而事实常常并非如此。当系统中只有一个CPU时,以某种顺序在单CPU情况下执行多线程被称为调度scheduling 。Java采用的是一种简单、固定的调度法,即固定优先级调度。这种算法是根据处于可运行线程的相对优先级来实行的。当线程产生时,它继承原线程的优先级。在需要时可对优先级进行修改。在任何时刻,如果有多条线程等待运行 系统选择优先级最高的可运行线程运行。只有当它停止、自动放弃、或由于某种原因成为非运行状态优先级的线程时才能运行。如果两个线程具有相同的优先级它们将被交替地运行。

Java中的第一个线程都有优先级,线程的优先级是介于Thead.MIN_PRIORITY到Thread.MAX_PRIORITY之间的整数介于0到10之间。缺省情况下,线程的优先级是5即NORM_PRIORITY 。我们可以用形如Thread.setPriorit

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号