Java基础加强多线程

Java基础加强多线程

ID:36468057

大小:2.23 MB

页数:33页

时间:2019-05-09

Java基础加强多线程_第1页
Java基础加强多线程_第2页
Java基础加强多线程_第3页
Java基础加强多线程_第4页
Java基础加强多线程_第5页
资源描述:

《Java基础加强多线程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、多线程第二章使用多线程实现生产者和消费者问题使用多线程实现龟兔赛跑使用多线程实现多个用户安全存取一个账户本章目标点重点重点难第2页/共38页点重概述线程基础进程与线程线程分类多线程的优势线程控制线程的创建和启动线程的状态线程调度线程同步线程同步的必要性线程同步的实现死锁线程间通信线程间通信的必要性线程间通信的实现进程和线程2-1程序程序是一段静态的代码,它是应用程序执行的蓝本进程进程是指一种正在运行的程序,有自己的地址空间进程的特点动态性并发性独立性进程和线程2-2线程的定义进程内部的一个执行单元,它是程序中一个单一的顺序控制流程。如果在一个进程中同时运行了多

2、个线程,用来完成不同的工作,则称之为多线程线程的定义进程是系统资源分配的单位,可包括多个线程线程是独立调度和分派的基本单位,共享进程资源引入进程是为了多个程序并发执行,提高资源的利用率和系统吞吐量引入线程是为了减少程序在并发执行时付出的时空开销线程分类系统级线程(核心级线程):由操作系统内核进行管理,使用户程序可以创建、执行、撤销线程用户级线程管理过程全部由用户程序完成,操作系统内核只对进程进行管理多线程的优势多线程使系统空转时间减少,提高CPU利用率进程间不能共享内存,但线程之间共享内存非常容易使用多线程实现多任务并发比多进程的效率高Java语言内置多线程功

3、能支持,简化了Java的多线程编程线程的创建和启动6-1两种方法来创建线程继承Java.lang.Thread类,并覆盖run()方法实现Java.lang.Runnable接口,并实现run()方法classMyThreadextendsThread{publicvoidrun(){/*覆盖该方法*/}}classMyThreadimplementsRunnable{publicvoidrun(){/*实现该方法*/}}线程的创建和启动6-2启动线程新建的线程不会自动开始运行,必须通过start()方法启动启动继承Thread的线程启动实现Runnable接

4、口的线程MyThreadt=newMyThread();t.start();MyThreadmt=newMyThread();Threadt=newThread(mt);t.start();线程的创建和启动6-3继承Java.lang.Thread类publicclassThreadDemo1{publicstaticvoidmain(Stringargs[]){MyThread1t=newMyThread1();t.start();while(true){System.out.println("兔子领先了,别骄傲");}}}classMyThread1ext

5、endsThread{publicvoidrun(){while(true){System.out.println("乌龟领先了,加油");}}}线程的创建和启动6-4实现Java.lang.Runnable接口publicclassThreadDemo2{publicstaticvoidmain(Stringargs[]){MyThread2mt=newMyThread2();Threadt=newThread(mt);t.start();while(true){System.out.println("兔子领先了,加油");}}}classMyThread2

6、implementsRunnable{publicvoidrun(){while(true){System.out.println("乌龟超过了,再接再厉");}}}线程的创建和启动6-5两种线程创建方式的比较继承Thread类方式的多线程优势:编写简单劣势:无法继承其它父类实现Runnable接口方式的多线程优势:可以继承其它类,多线程可共享同一个Thread对象劣势:编程方式稍微复杂,如果需要访问当前线程,需要调用Thread.currentThread()方法线程的创建和启动6-6Thread类的常用方法方法功能staticThreadcurrentTh

7、read()得到当前线程finalStringgetName()返回线程的名称finalvoidsetName(Stringname)将线程的名称设置为由name指定的名称voidstart()调用run()方法启动线程,开始线程的执行voidrun()存放线程体代码线程的状态新生使用new关键字创建一个线程后,尚未调用其start方法之前可运行调用线程对象的start方法之后这个状态当中,线程对象可能正在运行,也可能等待运行阻塞一种“不可运行”的状态,在得到一个特定的事件之后会返回到可运行状态死亡线程的run方法运行完毕或者在运行中出现未捕获的异常时线程调度

8、6-1优先级概述每个线程执行时都具有一

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

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

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