java程序设计课程讲义多线程new

java程序设计课程讲义多线程new

ID:34602081

大小:1.00 MB

页数:24页

时间:2019-03-08

java程序设计课程讲义多线程new_第1页
java程序设计课程讲义多线程new_第2页
java程序设计课程讲义多线程new_第3页
java程序设计课程讲义多线程new_第4页
java程序设计课程讲义多线程new_第5页
资源描述:

《java程序设计课程讲义多线程new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java多线程机制本章内容•线程的基本概念•线程的创建和启动•线程的调度和优先级•线程的状态控制•线程同步OS:多进程多任务对进程:多线程程序进程线程1,一段代码程序执行起来就是进程进程内部的顺序控制流有边界CPU分配时静态间片的最可以调度CUP的资源小单位和内存管理轻量级的进程动态的动态的线程的基本概念•线程是一个程序内部的顺序控制流•线程和进程的区别•进程是指在内存中运行的一个应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程•每个进程都有独立的代码和数据空间(进程上下文)。进程间的切换会有较大的开销•线程是指进程中的一个执行流程,一个进程中可以运行多个线

2、程•线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器(PC),线程切换的开销小•多进程:在操作系统中能同时运行多个任务(程序)•多线程:在同一应用程序中有多个顺序流同时执行线程的创建和启动线程的创建和启动•Runnable接口线程的创建和启动•Thread类线程状态•创建新创建了一个线程对象•就绪状态线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。•运行状态就绪状态的线程获取了CPU,执行程序代码•阻塞状态阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运

3、行•终止线程执行完了或者因异常退出了run()方法,该线程结束生命周期线程状态转换线程控制基本方法简单的示例-ThreadpublicclassSimpleThreadextendsThread{publicSimpleThread(Stringstr){super(star);}//创建具以str为名字的线程publicvoidrun(){//定义run()方法for(inti=0;i<10;i++){System.out.println(i+""+getName());try{//休眠一段时间sleep((int)(Math.random()*1000));}catch(Int

4、erruptedExceptione){}}System.out.println("DONE!"+getName());}}//SimpleThread.java11简单的示例-ThreadpublicclassTwoThreadsTest{publicstaticvoidmain(String[]args){newSimpleThread("Takeitmyself??").start();newSimpleThread("Giveittopolice!!").start();}}//TwoThreadsTest.java12线程状态转换sleep()结束sleep()notif

5、y()/notifyAll()wait()join()中断join()run()运行结束或异常退出获取CPU时间yield()方法线程的优先级别线程同步•在Java语言中,引入了对象互斥锁的概念,保证共享数据操作的完整性。每个都对应于一个可称为“互斥锁”的标识,这个标记保证在任意时刻,只能有一个线程访问该对象。•关键字synchronized来与对象的互斥锁联系,当某个对象synchronized修饰时,表明该对象在任意时刻只能由一个线程访问。线程同步wait和sleep区别•wait时别的线程可以访问锁定对象•sleep时别的线程也不可以访问锁定对象线程状态转换一个多线程的例子创

6、建用户的线程子类Producer:产生数据(存数据);Consumer:消费数据(取数据)CubbyHole:共享数据区,同步方法put(intvalue)方法intget()方法主类中创建共享数据对象,并启动两线程18一个多线程的例子classCubbyHole{privateintseq;//共享数据privatebooleanavailable=false;//条件标志变量publicsynchronizedintget(){//取数据的同步方法get()while(available==false){try{wait();//条件不符合,则wait}catch(Interr

7、uptedExceptione){}}available=false;//修改条件notify();//通知唤醒其他等待管程的线程returnseq;//返回要取出的数值}//endofget()19一个多线程的例子//存放数据的同步方法put()publicsynchronizedvoidput(intvalue){while(available==true){try{wait();//条件不符合,则wait}catch(InterruptedExceptione)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。