JAVA程序员培训定制课程c13课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《JAVA程序员培训定制课程c13课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序员 培训 定制 课程 c13 课件
- 资源描述:
-
1、第十三章1线程的概念模型线程的创建和启动线程的状态控制临界资源、对象锁和死锁线程的互斥和同步2线程是一个程序内部的顺序控制流。线程和进程每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。多进程:在操作系统中能同时运行多个任务(程序)多线程:在同一应用程序中有多个顺序流同时执行3 虚拟的CPU,由java.lang.Thread类封装和虚拟 CPU所执行的代码,传递给Thread类对象。CPU所处理的数据,传递给Thread类对象。代 码数 据虚拟CPUJava线程模型4
2、Java的线程是通过java.lang.Thread类来实现的。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。5-public class TestThread1 public static void main(String args)Runner1 r=new Runner1();Thread t=new Thread(r);t.start();class Runner1 implements Runnable public void run()for(int i=0;i30;i+)System.out.println(No.+i);
3、6 Java中引入线程机制的目的在于实现多线程可以使用同一个Runnable接口(的实现类)类型的实例构造多个线程多线程之间可以共享代码和数据 举例Thread t1=new Thread(r);Thread t2=new Thread(r);7public class TestThread2 public static void main(String args)Runner2 r=new Runner2();Thread t1=new Thread(r);Thread t2=new Thread(r);t1.start();t2.start();class Runner2 implemen
4、ts Runnable public void run()for(int i=0;i30;i+)System.out.println(No.+i);8class MyRunner implements Runnable class YourRunner implements Runnable MyRunner m =new MyRunner();YourRunner y1=new YourRunner();YourRunner y2=new YourRunner();Thread t1=new Thread(m);Thread t2=new Thread(y1);Thread t3=new T
5、hread(y2);Thread t4=new Thread(y2);线程虚拟CPU代 码数 据t1Thread类对象t1Runner2类中的run方法Runner2类型对象rt2Thread类对象t2Runner2类中的run方法Runner2类型对象r9使用start()方法启动线程启动线程是使线程进入到可运行(runnable)状态,并不一定立即开始执行该线程 public class TestThread1 public static void main(String args)Runner1 r=new Runner1();Thread t=new Thread(r);t.start
6、();1011public class TestThread3public static void main(String args)Runner3 r=new Runner3();Thread t=new Thread(r);t.start();class Runner3 implements Runnable public void run()for(int i=0;i30;i+)if(i%10=0&i!=0)tryThread.sleep(2000);catch(InterruptedException e)System.out.println(No.+i);12public class
7、 TestThread4 public static void main(String args)Runner4 r=new Runner4();Thread t=new Thread(r);t.start();for(int i=0;i0)System.out.println(in thread main i=+i);System.out.println(Thread main is over);r.shutDown();class Runner4 implements Runnable private boolean flag=true;public void run()int i=0;w
8、hile(flag=true)System.out.print(+i+);public void shutDown()flag=false;13方 法功 能isAlive()判断线程是否还“活”着,即线程是否还未终止。getPriority()获得线程的优先级数值setPriority()设置线程的优先级数值Thread.sleep()将当前线程睡眠指定毫秒数join()调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程结束,再恢复当前线程的运行。yield()让出CPU,当前线程进入就绪队列等待调度。wait()当前线程进入对象的wait pool。notify()/notifyA
9、ll()唤醒对象的wait pool中的一个/所有等待线程。14public class TestThread5 public static void main(String args)Runner5 r=new Runner5();Thread t=new Thread(r);t.start();try t.join();catch(InterruptedException e)for(int i=0;i50;i+)System.out.println(主线程:+i);class Runner5 implements Runnable public void run()for(int i=0
展开阅读全文