下载此文档

Java线程实例讲解【原创】.doc


文档分类:IT计算机 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
深入Java 线程
王伟 2009-07-30
一、什么是线程
为了清楚什么是线程,先了解一下程序和进程的概念。
程序就是源代码和文档的集合,如果经过编译后,就是目标平台可执行
的指令集合。程序是静态的。
相比之下,进程是动态的。操作系统加载可执行程序后,即产生了一系
统进程,由操作系统调度管理。现代操作系统都是多任务多用户的,意味着
操作系统可以调度许多进程。进程之间亦可以依赖于操作系统进行通信。进
程是重量级的,因为进程的调度需要耗费大量的CPU和内存资源。
线程是进程的进一步划分,可以认为一个进程由多个线程按各自的执行
路线运行而组成。由于线程共享同一个进程内存空间,线程间通信、调度开
销要比进程之间的通信、调度开销要小得多。因此,现在的应用程序往往会
采用多线程编程来提高性能。
二、创建Java线程
Java提供了语言级对线程的支持。Java中线程被抽象为对象,线程的
创建需要用到Thread类或者Runnable接口。也就是说线程类的编写有两种
方式:一种是扩展Thread类;另一种是实现Runnable接口。无论是哪一种
方式,线程的执行体都是run方法。
代码Thread_1,采用扩展Thread类的方式定义线程类
测试类:
代码Thread_2,采用实现Runnable接口的方式定义线程类
测试类:
三、Java线程的状态及常用方法
Java线程状态可以用下表描述:
状态
阻塞
可中断
描述
正运行
正在处理器上运行
准备运行
等待轮流获得处理器时间
休眠


经过一段时间,或者被中断后准备运行
等待


接到通知,或超时,或被中断后准备运行
阻塞于IO

IO条件改变后准备运行
阻塞与同步

获得锁后准备运行
以下是线程状态过渡示意图:
新线程
准备运行
运行
休眠
等待
阻塞于IO
阻塞于同步
start ( )
规化器选中来运行
yeild ( )
规化器将其交互出去
线程阻塞
解除阻塞
( ) 方法通知线程规化器这个线程已准备就绪,并尽快执行
线程,即执行线程类的run方法。这意味着编程只能控制线程进入准备运行
状态,何时真正运行则由线程规化器决定。
( ) 方法将当前线程置入睡眠状态,进入睡眠状态的线程可能
被其他线程中断而采取某种行为。睡眠线程被中断时,sleep方法抛出一
InterruptException异常。
代码Thread_3
测试类:
输出结果:
在主线程(main方法)中,( )中断了正在休眠的线程t3。
实际上,( ) 方法只是在目标线程中设置了一个标志,表示它
已经被中断,并立即返回。上例中,( ) 方法检测到t3被中断,
因此中断t3的休眠状态并抛出InterruptionException。如果在调用sleep()之前
线程已经被interrupt ( )方法标志为中断,sleep( ) 会立即抛出。
InterruptionException异常。
代码Thread_4:
main( ) 方法为主线程,( ) 方法能够获得当前线程的
引用,即主线程。在主线程休眠之前,主线程被标识为中断,因此sleep( )
方法立即抛出InterruptionException异常。
再来看一个例子:
测试类代码:
创建了2个线程t1、t2,t1的优先级为最低,而t2则是最高优先级,如
果在线程类Thread_5中没有代码:
线程t1,几乎没有机会获得处理器来执行代码,出于等待状态,加上次代码
后,如果是t2获得了处理器,执行完输出后,( ) 方法主
动放弃使用处理器的权利,从而使得t1有机会执行。
( ) 、( ) 、( ) 从Java
后不再赞成使用,这里不予以介绍。
四、线程并发
先看到一个例子:
代码Thread_6:
代码SharedObject:
测试代码:

Java线程实例讲解【原创】 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数13
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zgs35866
  • 文件大小0 KB
  • 时间2015-06-03
最近更新