- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章 多线程 主要内容 1 程序、线程与进程的概念 2 编写多线程的2种方法(能够区分主线程和自定义线程) 继承Thread类 实现Runnable接口 3 线程的状态和生命周期 4 线程的优先级 5 线程的基本控制(通过开关变量) 6 线程的同步(加锁): 同步方法 同步代码块 7 死锁 8 线程之间的同步控制 9 线程总结 1、程序、线程与进程的概念 程序:为完成特定任务、用某种语言编写的一组指令的集合,指一段静态的代码。 进程:从程序代码的加载、执行到执行完毕的动态过程。每个进程所占用的系统资源相对独立,并有它自己的专用的内存区域(PCB进程控制块)。 同一个应用程序可以被多次加载到系统的不同内存区域,分别执行,形成不同的进程。 是系统进行调度和资源分配的一个独立单位。 程序、线程与进程的概念 线程:线程是比进程更小一级的执行单元。 线程不能独立存在,必须存在于进程中,各线程间共享进程空间的数据。 一个进程在其执行过程中,可以产生多个线程,形成多条执行线路。 每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。 线程创建、销毁和线程间切换的代价远小于进程,又称为轻量级进程(lightweight process)。 使用线程的好处: 系统负担小,主要是CPU的分配。 有效的利用系统资源、提高程序的数据吞吐量、更好的发挥硬件的性能。 Java的多线程-Runnable接口 Java内置了线程的支持。 Java定义了java.lang.Runnable接口,里面定义了一个run()方法, public interface Runnable { public abstract void run(); } Run()方法内的语句就是要在子线程里执行的语句。 只要编写一个类实现Runnable接口,然后把代码写在run()方法里即可 Java的多线程-Thread类 Thread类:实现了Runnable接口,构造方法: Thread() 创建一个线程,默认线程的名字为:“Thread-”+n,其中的 n 为整数。 Thread(Runnable target) 以一个Runnable对象为参数创建线程,实际将执行target的run方法 Thread(String name) ,以name作为线程的名字创建线程对象 Thread(Runnable target, String name) Thread(ThreadGroup group, Runnable target) ,创建的线程加入group线程组 Thread类中定义了一个空的run()方法 ,需要在继承Thread类时重新编写run()方法 2 编写多线程程序的方法 方法1: 定义一个java.lang.Thread类的子类,覆盖Thread类的run()方法,然后创建该子类的实例。 方法2: 定义一个实现Runnable接口的类,实现它的run()方法;然后将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例。 方法1:继承Thread类 三个步骤: 1.自定义多线程类的格式 public class 线程子类名 extends Thread { 属性定义; 构造方法定义; public void run( ){ //添加线程启动后需要执行的程序代码; } 其它方法定义; } 方法1:继承Thread类 2. 创建线程对象(在需要执行子线程的代码位置) 线程子类名 线程对象名=new 线程子类名(实际参数); 3.启动一个线程对象 线程对象名.start(); 此时,run()方法将自动执行 【例1】通过继承Thread编写多线程程序 方法1:继承Thread类ThreadDemo.java public class ThreadDemo extends Thread { private int money=10000; public void run(){ for (int i=0;i5;i++){ money+=1000; Thread.yield(); } System.out.println(this.getName()+ money=+money); } public ThreadDemo(String name,int money){ super(name
原创力文档


文档评论(0)