网站大量收购独家精品文档,联系QQ:2885784924

多线程参考文档.doc

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

线程的基本概念 线程的创建和启动 线程的调度和优先级 线程的状态控制 线程的同步 线程的基本概念 多线程编程的意义: 多线程可以使程序具有两条或两条以上的并发执行的路径,这样可以改善程序的响应的性能,提高资源的利用率 线程的概念: 进程:一个运行的程序,可以同时并发多个线程。(进程是一个静态的概念,当我们把程序的代码调入内存(代码区),放入并没有执行。说明一个进程已经创建好了。 我们所说的进程开始执行是说这个进程中的主线程开始执行了。 线程:在进程的内部,划分出多个顺序执行的流程。一个线程就是一个独立的执行路径。 进程和线程的区别: 每一个进程都有独立的代码和数据空间,每启支一个程序就启动了一个进程。进程间的切换会有较大的开销。每一个进程可以启动几个线程. 线程是最小的执行单位,多个线程共享内存,从而极大地提高了程序的运行效率。线程不能够独立执行,必须依存在进程中。 宏观上并行(cpu的执行效率非常高,它会把自已的执行时间划分为很多个小时间片,然后把这些时间片分给要执行的线程),微观上串行(在任何一个时间点上只能有一个线程在执行)。 线程的创建和启动 Java的线程是通过java.lang.Thread类来实现的。也就是说java中的线程有两方面的含义,一个是一条独立的执行路径。二是java.lang.Thread类或其子类的一个对象。 在java中开始线程有两种方式:一是继承Thread类,二是实现Runnable接口。 每个线程都是通过某个特定的线程对象所对应的run()方法来完成其操作,方法run()称为线程体 开发一个线程的关键是给线程指定其启动之后要执行的任务。(在run方法中) 两种方式定义自已的线程: 继承Thread类: 继承Thread类的类便具有了线程的能力.采用此方法最重要的重写run方法: Class 类名 extends Thread { Public void run(){ //线程体 } } 实现Runnable接口: 在Runnable接口中有一个抽象的方法run(),实现Runnable接口的类就具有描述线程任务的能力. 两种方式的比较: 都可以得到一条独立的执行路径。 继承Thread类虽然简单,但继承Thread类之后就不能再继承其它的类,这在有些情况下会影响开发。 实现Runnable接口既不影响继承其它的类,也不影响实现其它的接口,灵活性更好。 创建线程对象 继承Thread类的方式: 对于继承Thread类,其自身就是一个线程类,在创建线程类对象时就创建了。 Thread th = new MyThread(); 实现Runnable接口方式: 对于实现Runnable接口它本身不是一个线程类,只是在该类中通过实现run方法指出了线程需要完成的任务,然而,若想得到一个线程,必须创建线程类对象或其子类对象,这时就需要使用Thread的特定的构造器来完成这个任务。 启动线程: 当线程对象创建完成后,其还只是一个普通的对象,并没有成为一条独立的执行路径,想让其成为一条独立的执行路径必须进行启动,线程没有启动的情况下,可以像调用其他对象的方法一样调用线程对象中的任何可见方法。 Run方法可以作为普通的方法一样调用,但调用run方法不代表创建了一个独立执行路径。 若要启动一个线程,只需调用线程对象的start()方法即可。 线程的状态: 新建状态:用new语句创建的线程对象处于新建状态,此时它和其他的java对象一样,仅仅在堆中分配内存 就绪状态(可运行态):当一个线程对象创建之后,其它线程调用它的Start()该线程就进入就绪状态。处于这种状态的线程位于可运行池中,等待cpu的时间片(使用权) 运行态:处于这种状态的线程占用cpu,执行程序代码,只有处于就绪态的线程才有机会进入运行态。 阻塞状态: 阻塞状态是指线程因为某些原因放弃cpu暂时停止运行,当线程处于阻塞状态时,java虚拟机不会给它分配cpu,直到线程重新进入就绪状态,它才有机会转到运行状态。 阻塞状态分三种: 位于对象等待队列中的阻塞状态:当线程处于运行状态时,如果执行了某个对象的wait()方法,java虚拟机就会把线程放到这个对象的等待队列中。 位于对象锁池中的阻塞状态:当线程处于运行状态,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其他的线程占用,java虚拟机就会把这个线程放到这个对象的锁池中 其他阻塞状态:当前线程执行了sleep方法,或者调用其他线程的join()方法,或者发生了i/o请求,就会进入这种状态。 死亡状态: 当线程退出run()方法时,就进死亡状态,该线程生命周期结束。线程有可能是正常结束,也有可能是遇到异常而退出,不管线程正常结束还是异常结束,都不

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档