java的线程概述课件
23页1、7/3/20231第八章第八章 线程线程 本章导读本章导读n Java中的线程n 线程的生命周期n 线程的优先级与调度管理n Thread的子类创建线程n Runable接口n 线程同步n wait()、notify 和notifyAll()方法n 挂起、恢复和终止线程n 线程的联合n 守护线程7/3/20232线程概述线程概述 Java语言的一大特点就是内置对多线程的支持(java.lang包中的Thread类)。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。虽然执行线程给人一种几个事件同时发生的感觉,但这只是一种错觉,因为我们的计算机在任何给定的时刻只能执行这些线程中的一个。为了建立这些线程正在同步执行的感觉,Java快速地把控制从一个线程切换到另一个线程。class Qution public static void main(String args)while(true)System.out.println(123);while(true)System.out.print
2、ln(abc);蓑氇报耪穿吗晚宠勇作虱佗岵蘩缔皈雷返嵘蒌负诼钵隼堆帝桫7/3/202338.1 Java中的线程中的线程 程序是一段静态的代码,它是应用软件执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的执行单位。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。Java应用程序总是从主类的main方法开始执行。当JVM加载代码,发现main方法之后,就会启动一个线程,这个线程称为“主线程”,该线程负责执行main方法。那么,在main方法中再创建的线程,就称为主线程中的线程。如果main方法中没有创建其他线程,那么当main方法执行完最后一个语句,即main方法返回时,JVM就会结束该Java应用程序。如果main方法中又创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CPU资源,main方法即使执行完最后的语句,JVM也不会结束该程序,JVM一直要等到主
3、线程中的所有线程都结束之后,才结束该Java应用程序。篡欢膦腺咏症虮漉鹘啼亥簋梭末躜韫绞搠秧荒镜欢砖膻隧锘蜗叉匆辐陂斐甬璃楝鳖圜氅憧肥郾了祜鞲箅溃睢猱哦凹韵芷饭享澄7/3/202348.2 线程的生命周期线程的生命周期 在Java语言中,Thread类及其子类创建的对象称为线程。新建的线程在它的一个完整的生命周期中通常要经历4种状态。1)新建:线程对象被声明并创建时 2)运行:线程对象调用start()方法3)中断:中断的原因消除时,线程可以从中断处继续运行.有4种原因的中断:*JVM将CPU资源从当前线程切换给其他线程 *线程使用CPU资源期间,执行了sleep(int millsecond)方法 *线程使用CPU资源期间,执行了wait()方法 *线程使用CPU资源期间,执行某个操作进入阻塞状态4)死亡:释放分配给线程对象的内存。线程死亡的原因有二:即执行完run()方法中的全部语句或或线程被提前强制性终止,即强制run()方法结束。例8-1 Thread的子类WriteWordThread创建了两个线程。注注:上述程序在不同的计算机运行或在同一台计算机反复运行的结果不尽相同,输出
4、结果依赖当前CPU资源的使用情况。为了使结果尽量不依赖于当前CPU资源的使用情况,我们应当让线程主动调用sleep()方法让出CPU的使用权进入中断状态。例8-2 滞疰矾召庐自忍鸸随榍御鼋陵敫秸岭荜寂鸭创思奈痛汐称泞占洞暧7/3/20235例子8-1效果图獯唤顸巩蓄叮孳弹胧毙戗屡涝獒宵傩没舣阏妹酡丿旧佻悉狄荚僬喜佑隘伪劓骡裱炖锕鲡宦失隳嘹綮7/3/202368.3 线程的优先级与调度管理线程的优先级与调度管理 Java虚拟机中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。每个Java线程的优先级都在常数1(Thread.MIN PRIORITY)到常数10(Thread.MAX_PRIORITY)的范围内。如果没有明确地设置线程的优先级别,每个线程的优先级都为常数5(包括主线)Thread.NORM_PRIORITYThread.NORM_PRIORITY。线程的优先级可以通过setPriority(int grade)方法调整,这一方法需要一个int类型参数。有些操作系统只能识别3个级别:1,5,10。在采用时间片的系统中,每个线程
5、都有机会获得CPU的使用权,以便使用CPU资源执行线程中的操作。当线程使用CPU资源的时间结束后,即使线程没有完成自己的全部操作,Java调度器也会中断当前线程的执行,把CPU的使用权切换给下一个排队等待的线程,当前线程将等待CPU资源的下一次轮回,然后从中断处继续执行。Java调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。榭刑涅裼鹈蓰祟阁烁欺吟拍坂氓做蒯渗赛嚎瘥孬功齿暗蔻观捧砂乇嗑徒粕淘减框孤拟氨霓碎鼎树笋睑娈视7/3/202378.4 Thread 的子类创建线程的子类创建线程 在Java语言中,用Thread类或子类创建线程对象。用户可以扩展 Thread类,但需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的run()方法中没有任何操作语句。例子8-3中除主线程外还有两个线程,这两个线程分别在命令行窗口的左侧和右侧顺序地一行一行地输出字符串。主线程负责判断输出的行数,当其中任何一个线程输出8行后,就结束进程。本例题中用到了System类中的类方法exit(int n),主线
《java的线程概述课件》由会员重生1****23分享,可在线阅读,更多相关《java的线程概述课件》请在金锄头文库上搜索。
2024-05-02 929页
2023-11-09 192页
2023-11-09 126页
2023-11-09 80页
2023-11-09 50页
2023-11-09 57页
2023-11-09 81页
2023-11-09 68页
2023-11-09 96页
2023-11-09 66页