并发

从性能的角度看,如果没有任务会阻塞,那么在单处理器机器上使用并发就没有任何意义。

 

像java所使用的并发系统会共享诸如内存和I/O这样的资源,因此编写多线程程序最基本的困难在于在协调不同线程驱动的任务之间对这些资源的使用,以使得这些资源不会同时被对歌任务访问。

 

Thread Group

 

java中每个线程都属于一个线程组,线程组提供了一个将多个线程组织成一个线程组对象来管理的机制,如可以通过一个方法调用来启动线程组中的所有线程。

1 create

线 程组是由java.lang 包 中的ThreadGroup 类 实现的。它的构造方法如下:

·         public ThreadGroup(String name)

·         public ThreadGroup(ThreadGroup parent, String name)

name 为线程组名,parent 为线程组的父线程组,若无该参数则新建线程组的 父线程组为当前运行的线程的线程组。

创建线程时可以明确指定新建线程属于哪个线程组,若没有明确指定则放入缺省线程组中。一旦线程被指定 属于哪个线程组,便不能改变,不能删除。

2 default group

如果在创建线程时没有在构造方法中指定所属线程组,运行时系统会自动将该线程放入创建该线程的线程所属的线程组中。那么当我们创建线程时没有指定线程组,它 属于哪个线程组呢?

Java 应用程序启动时,Java 运行时系统创建一个名mainThreadGroup 对象。除非另外指定,否则所有新建线程 都属于main 线程组 的成员。

如 下面代码创建的myThread 线 程属于myThreadGroup 线 程组。

ThreadGroup myGroup = new ThreadGroup("My Group of Threads");

Thread myThread = new Thread(myGroup, "a thread for my group");

为 了得到线程所属的线程组可以调用ThreadgetThreadGroup() 方法,该方法返回ThreadGroup 对象。可以通过下面方法获得线程所属 线程组名。

myThread.getThreadGroup().getName()

一 旦得到了线程组对象,就可查询线程组的有关信息,如线程组中其他线程、也可仅通过调用一个方法就可实现修改线程组中的线程,如挂起、恢复或停止线程。

3 线程组操作方法

线 程组类提供了有关方法可以对线程组操作。

·         public final String getName() 返回线程组名。

·         public final ThreadGroup getParent() 返回线程组的父线程组对象。

·         public final void setMaxPriority(int pri) 设置线程组的最大优先级。线程组中的线程不能超过 该优先级。

·         public final int getMaxPriority() 返回线程组的最大优先级。

·         public boolean isDestroyed() 测试该线程组对象是否已被销毁。

·         public int activeCount() 返回该线程组中活动线程的估计数。

·         public int activeGroupCount() 返回该线程组中活动线程组的估计数。

·         public final void destroy() 销毁该线程组及其子线程组对象。当前线程组的所有线程必须已经停止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值