网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16 多线程

多线程-multithread/概念(1) 与其它很多计算机程序设计语言(包括C++)不同,Java被设计成 支持多线程编程(multithreaded programming) 如果一个程序被称为是多线程的,则该程序包括两条以上并发的独立执行部分,每一个这样的并发执行部分被称为一个线程(thread) 与基于进程(process-based)的执行环境相比较,基于线程(thread-based)的执行环境是多任务处理的一种特殊形式 多进程环境中每一个进程既包括其所要执行的指令, 也包括了执行指令所需的任何系统资源, 如CPU、内存空间、I/O端口等,不同进程所占用的系统资源相对独立 多线程环境中每一个线程都隶属于某一进程,由进程触发执行,在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源 多线程-multithread/概念(2) 在一个多线程运行环境中运行的线程可以有多种状态,也就是说一个线程在不同时刻会处于下列状态之一: 正在运行(running);在等待运行(runnable);被唤醒(notify);被阻塞(blocked);被终止(terminate); 多线程-multithread/概念(3) Java中的多线程是建立在Thread类,Runnable接口的基础上的 通常有两种办法让我们来创建一个新的线程 创建一个Thread类,或者一个Thread子类的对象 创建一个实现Runnable接口的类的对象 每一个线程都有自己的优先级,如果不显式地说明,则被创建的线程具有与创建它的线程相同的优先级 多线程- multithread/Thread类介绍(1) name:线程的名称,target:要运行的线程对象,group:线程组的名称,stackSize:堆栈的大小 多线程- multithread/Thread类介绍(2) countStackFrames(); suspend(); resume(); stop(); stop(Throwable?obj); 多线程- multithread/Runnable接口介绍 一个实现Runnable接口的类,是为了去创建一个新的线程 由于不能多重继承的原因,以实现Runnable接口的方式生成新线程比扩展Thread类的方法更一般化 特别是在除了run()方法以外,并不打算重写Thread类的其它方法的情况下,以实现Runnable接口的方式生成新线程就显得更加合理了 多线程-multithread/创建线程(1) 将一个类定义为Thread的子类,那么这个类就可以用来创建线程。 这个类中要重载Thread的public void run()方法: 这个方法称为线程体,它是整个线程的核心,线程所要完成任务的代码都定义在其中,实际上不同功能的线程之间的区别就在于它们线程体的不同 对于一个计算比给定值大的素数的线程,也许会是如下的样子: 多线程-multithread/创建线程(2) class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { //compute primes larger than minPrime ?.?.?. } } public PrimeThreadDemo{ public static void main(String[] s){ PrimeThread pt = new PrimeThread(100); pt.start(); } } 多线程-multithread/创建线程(3) Runnable是Java中用以实现线程的接口,从根本上讲,任何实现线程功能的类都必须实现该接口。 Runnable接口中只定义了一个方法就是run()方法,也就是线程体 Thread第二种构造方法中包含有一个Runnable实例的参数,这就是说,必须定义一个实现Runnable接口的类并产生一个该类的实例,对该实例的引用就是适合于这个构造方法的参数 前面计算素数的线程也可以写成如下形式: 多线程-multithread/创建线程(4) class PrimeRun implements Runnable { long minPrime; PrimeRun (long minPrime) { this.minPrime = minPrime; } p

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档