官方首页
|
PHPWind社区营销
|
申请免费论坛空间
|
无图版
|
左右分栏
|
风格切换
|
帮助
|
Home首页
|
论坛首页
»
您尚未
登录
注册
|
标签
|
推荐
|
搜索
|
社区服务
|
道具中心
|
PW积分兑换
社区服务
银行
朋友圈
勋章中心
辩论
风格切换
gray
moon
Christmas
512
black
movie
wind5
blue
wind
green
pink
yellow
newyear
短消息
收件箱
发件箱
消息跟踪
写新消息
控制面板
控制面板首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
交易币管理
积分转换
特殊组购买
收藏夹
我的主题
统计排行
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
PHPWind Board
»
PHP/Java 讨论区
»
JAVA教程 第六讲 Java的线程和Java Applet
>> PHPwind 动态交流
|-
PHPWind最新动态
|- PHPWind黑板报
|- 程序发展建议
|- PHPWind程序发布
|- 转换程序专栏
>> PHPwind官方服务专区
|-
商业用户交流区
|- 官方推荐插件区
|- PHPWind产品销售
|- PHPWind社区营销
|- 数据转换申请专区
>> PHPWind系列产品交流
|-
PW Forums[论坛系统]讨论区
|- HOW-TOs(新手教程)
|-
PHPWind Manual
|- PW Forums[论坛系统] 插件开发
|- Hack & 插件发布区
|- PW Forums[论坛系统] 模板风格
|- 优秀风格区
|- PW风格素材区
|- VeryCMS[内容管理系统] 讨论区
|- VeryCMS模版风格
|- LxBlog[博客系统] 讨论专区
|- BLOG 插件开发
|- BLOG 模版风格
|- LxShop[商城系统] 讨论专区
>> 站长技术与资源交流
|-
站长交流
|-
PW使用教程投稿
|- UNIX 技术交流
|- PHP/Java 讨论区
|- 源代码交流
|- 软件信息交流
|- 站长广告专区
|- ShopEx网上商店商城系统
|- HiShop网上商店系统
|- DedeCms织梦内容管理系统
|- PHP168整站系统
|- CMSWARE 思维网站内容管理系统
>> 综合社区
>> 站务管理
|- PHPWind Team
|- 主机业务
|- 站务管理与公告
|- 版主申请投票栏
社区 • 世界 • PHPWind五周年庆典
加入PHPWind,侠客在行动...
赠送PHPWind论坛空间3个月
亿人科技|双线型PHPWIND论坛空间热售
西部数码虚拟主机预装PHPWIND论坛
PHPWind 7月招聘计划(诚邀您的加盟!)
预装PHPWIND免费500M空间
新 帖
本页主题:
JAVA教程 第六讲 Java的线程和Java Applet
打印
|
加为IE收藏
|
复制链接
|
收藏主题
|
上一主题
|
下一主题
sp400500
级别:
新手上路
精华:
0
发帖:
22
威望:
3 点
金钱:
9 两
贡献值:
0 点
PW积分:
0 点
在线时间:23(小时)
注册时间:2006-08-07
最后登录:2008-03-27
小
中
大
引用
推荐
编辑
只看
JAVA教程 第六讲 Java的线程和Java Applet
6.1 线程简介
随着计算机的飞速发展,个人计算机上的操作系统也纷纷采用多任务和分时设计,将早期只有大型计算机才具有的系统特性带到了个人计算机系统中。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存
空间
、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。
线程与进程相似,是一段完成某个特定功能的
代码
,是程序中单个顺序的流控制;但与进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多,正因如此,线程被称为轻负荷进程(light-weight process)。一个进程中可以包含多个线程。
一个线程是一个程序内部的顺序控制流。
1. 进程:每个进程都有独立的代码和数据空间(进程上下文) ,进程切换的开销大。
2. 线程:轻量的进程,同一类线程共享代码和数据
空间,
每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。
3. 多进程:在操作系统中,能同时运行多个任务程序。
4. 多线程:在同一应用程序中,有多个顺序流同时执行。
6.1.1 线程的概念模型
Java内在支持多线程,它的所有类都是在多线程下定义的,Java利用多线程使整个系统成为异步系统。Java中的线程由三部分组成,如图6.1所示。
1. 虚拟的CPU,封装在Java.lang.Thread类中。
2. CPU所执行的代码,传递给Thread类。
3. CPU所处理的数据,传递给Thread类。
图6.1线程
6. 1. 2 线程体(1)
Java的线程是通过Java.lang.Thread类来实现的。当我们生成一个Thread类的对象之后,一个新的线程就产生了。
此线程实例表示Java解释器中的真正的线程,通过它可以启动线程、终止线程、线程挂起等,每个线程都是通过类Thread在Java的软件包Java.lang中定义,它的构造方法为:
public Thread (ThreadGroup group,Runnable target,String name);
其中,group 指明该线程所属的线程组;target实际执行线程体的目标对象,它必须实现接口Runnable; name为线程名。Java中的每个线程都有自己的名称,Java提供了不同Thread类构造器,允许给线程指定名称。如果name为null时,则Java自动提供唯一的名称。
当上述构造方法的某个参数为null时,我们可得到下面的几个构造方法:
public Thread ();
public Thread (Runnable target);
public Thread (Runnable target,String name);
public Thread (String name);
public Thread (ThreadGroup group,Runnable target);
public Thread (ThreadGroup group,String name);
一个类声明实现Runnable接口就可以充当线程体,在接口Runnable中只定义了一个方法 run():
public void run();
任何实现接口Runnable的对象都可以作为一个线程的目标对象,类Thread本身也实现了接口Runnable,因此我们可以通过两种方法实现线程体。
(一)定义一个线程类,它继承线程类Thread并重写其中的方法 run(),这时在初始化这个类的实例时,目标target可为null,表示由这个实例对来执行线程体。由于Java只支持单重继承,用
这种
方法定义的类不能再继承其它父类。
(二)提供一个实现接口Runnable的类作为一个线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体 run()。这时,实现接口Runnable的类仍然可以继承其它父类。
每个线程都是通过某个特定Thread对象的方法run( )来完成其操作的,方法run( )称为线程体。图6.2表示了Java线程的不同状态以及状态之间转换所
调用
的方法。
图6.2 线程的状态
1. 创建状态(new Thread)
执行下列语句时,线程就处于创建状态:
Thread myThread = new MyThreadClass( );
当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。
2. 可运行状态( Runnable )
Thread myThread = new MyThreadClass( );
myThread.start( );
当一个线程处于可运行状态时,系统为这个线程分配了它需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于可运行( Runnable )状态。需要注意的是这一状态并不是运行中状态(Running ),因为线程也许实际上并未真正运行。由于很多计算机都是单处理器的,所以要在同一时刻运行所有的处于可运行状态的线程是不可能的,Java的运行系统必须实现调度来保证这些线程共享处理器。
3. 不可运行状态(Not Runnable)
进入不可运行状态的原因有如下几条:
1) 调用了sleep()方法;
2) 调用了suspend()方法;
3) 为等候一个条件变量,线程调用wait()方法;
4) 输入输出流中发生线程阻塞;
不可运行状态也称为阻塞状态(Blocked)。因为某种原因(输入/输出、等待
消息
或其它阻塞情况),系统不能执行线程的状态。这时即使处理器空闲,也不能执行该线程。
4. 状态(Dead)
线程的终止一般可通过两种方法实现:自然撤消(线程执行完)或是被停止(调用stop()方法)。目前不推荐通过调用stop()来终止线程的执行,而是让线程执行完。
搜索更多相关文章:
空间
这种
代码
消息
空间,
顶端
Posted: 2007-09-28 19:21 |
[楼 主]
my0536
级别:
一星会员
精华:
0
发帖:
287
威望:
4 点
金钱:
86 两
贡献值:
0 点
PW积分:
0 点
在线时间:9(小时)
注册时间:2007-09-28
最后登录:2008-01-02
小
中
大
引用
推荐
编辑
只看
牛,不错
潍坊生活网
顶端
Posted: 2007-10-05 01:18 |
1 楼
haiyong120
级别:
一星会员
精华:
0
发帖:
100
威望:
0 点
金钱:
7 两
贡献值:
0 点
PW积分:
0 点
在线时间:2(小时)
注册时间:2007-12-30
最后登录:2007-12-31
小
中
大
引用
推荐
编辑
只看
这些我都会~~~~~~~~~~~~~~~~~~~~~~
BBS(一起破解)地址:www.17pj.com
顶端
Posted: 2007-12-31 09:55 |
2 楼
买空间网-
买空间网就上买空间网
级别:
二星会员
精华:
0
发帖:
316
威望:
4 点
金钱:
124 两
贡献值:
0 点
PW积分:
0 点
在线时间:8(小时)
注册时间:2007-06-23
最后登录:2008-03-04
小
中
大
引用
推荐
编辑
只看
好长的一篇哦,慢慢看 谢谢分享哦
买空间网就上买空间网
顶端
Posted: 2008-01-07 16:35 |
3 楼
帖子浏览记录
版块浏览记录
快速跳至
>> PHPwind 动态交流
|- PHPWind最新动态
|- PHPWind黑板报
|- 程序发展建议
|- PHPWind程序发布
|- 转换程序专栏
>> PHPwind官方服务专区
|- 商业用户交流区
|- 官方推荐插件区
|- PHPWind产品销售
|- PHPWind社区营销
|- 数据转换申请专区
>> PHPWind系列产品交流
|- PW Forums[论坛系统]讨论区
|- HOW-TOs(新手教程)
|- PHPWind Manual
|- PW Forums[论坛系统] 插件开发
|- Hack & 插件发布区
|- PW Forums[论坛系统] 模板风格
|- 优秀风格区
|- PW风格素材区
|- VeryCMS[内容管理系统] 讨论区
|- VeryCMS模版风格
|- LxBlog[博客系统] 讨论专区
|- BLOG 插件开发
|- BLOG 模版风格
|- LxShop[商城系统] 讨论专区
>> 站长技术与资源交流
|- 站长交流
|- PW使用教程投稿
|- UNIX 技术交流
|- PHP/Java 讨论区
|- 源代码交流
|- 软件信息交流
|- 站长广告专区
|- ShopEx网上商店商城系统
|- HiShop网上商店系统
|- DedeCms织梦内容管理系统
|- PHP168整站系统
|- CMSWARE 思维网站内容管理系统
>> 综合社区
>> 站务管理
|- PHPWind Team
|- 主机业务
|- 站务管理与公告
|- 版主申请投票栏
PHPWind Board
»
PHP/Java 讨论区
Total 0.024571(s) query 5, Time now is:07-07 07:29, Gzip enabled
浙ICP备06001596号
Powered by
PHPWind
v6.3
Certificate
Code © 2003-07
PHPWind.com
Corporation