黑马程序员-java多线程

黑马程序员-java多线程

ID:42615915

大小:52.00 KB

页数:7页

时间:2019-09-18

黑马程序员-java多线程_第1页
黑马程序员-java多线程_第2页
黑马程序员-java多线程_第3页
黑马程序员-java多线程_第4页
黑马程序员-java多线程_第5页
资源描述:

《黑马程序员-java多线程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、黑马程序员-Java多线程了解进程和线程*在多任务系统中,每个独立执行的程序称为进程,也就是“正在进行的程序"。我们在使用的操作系统一般都是多任务的,即能够同时执行多个应用程序,实际情况是,操作系统负责对CPU等设备的资源进行分配和管理,虽然这些设备某一时刻只能做一件事,但以非常小的时间间隔交替执行多个程序,就可以给人以同时执行多个程序的感觉。*一个进程小乂可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,如果要一程序中实现多段代码同吋交替运行,就需产生多个线程,并指定每个线程上所要运行的程序代码段,这就是多线程。用Thread类创建线

2、程*要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数屮,并且run函数所在的类是Thread类的子类。倒过来看,我们要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖Thread类中的run函数,在子类的run函数中调用想在新线程上运行的程序代码。*启动一个新的线程,我们不是直接调用Thread的子类对象的run方法,而是调用Thread子类对象的start(从Thread类的继承到的)方法,Thread类对象的start方法将产生一个新的线程,并在该线程上运行该Thread类对彖中的run方法,根据而向对彖的运行时的多

3、态性,在该线程上实际运行的是ThreadT类(也就是我们写的那个类)对彖中的run方法。*山于线程的代码段在run方法中,那么该方法执行完成以后线程也就相应的结束了,因而我们可以通过控制run方法中循坏的条件来控制线程的结束。后台线程与联合线程*如果我们对某个线程对象在启动(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。*对java程序來说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。*ppjoin()的作用是把pp所对应的线程合并到调用pp.join

4、()语句的线程中。使用Runnable接口创建多线程*适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序的代码、数据有效分离,较好地体现了面向对彖的设计思想*可以避免由于Java的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们耍将己经继承了某一个类的子类放入多线程中,由于一个类不能同时冇两个父类,所以不能用继承Thread类的方式,那么,这个类就只能采用实现Runnable*当线程被构造时,需要的代码和数据通过一个对彖作为构造函数实参传递进去,这个对彖就是一个实现了Runnable接口的类的实例。*事实上,儿乎所有多

5、线程应用都可用Runnable接口方式。多线程在实际中的应用*网络聊天程序的收发水表记录的复制的中途取消*www服务器为每一个來访者都建立专线服务1,如何在自定义的代码中,自定义一个线程呢?通过对api的查找,java已经提供了对线程这类事物的描述。就Thread类。创建线程的第一种方式:继承Thread类。步骤:1,定义类继承Threado2,复写Thread类中的run方法。冃的:将自定义代码存储在run方法3,调用线程的start方法,该方法两个作用:启动线程,调用run方法。发现运行结果每一次都不同。因为多个线程都获取cpu的执行权。cpu执

6、行到谁,谁就运行。明确一点,在某一个时刻,只能有一个程序在运行。(多核除外)练习:创建两个线程,和主函数交替运行。原來线程都冇自己默认的名称Thread-编号编号从0开始staticThreadcurrentThread():获取当前线程名称。创建线程的笫二种方式:实现Runnable接口步骤:1,定义类实现Runnable接口2,覆盖Runnable接口中的run方法。将线程要运行的代码存放在该run方法中。3,通过Thread类建立线程对彖。4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。为什么要这么做?因为,自定

7、义的run方法所属的对象是Runnable接口的子类对彖。所以耍让线程去指定对彖的run方法,就必须明确该run方法所属对彖。5,调用Thread类的start方法开启线程并调用Runnable接口子类的run方法o实现方式和继承方式有什么区别呢?实现方式好处:避免了单继承的局限性。在定义线程时建议使用实现方式。两种方式区别:继承Thread:线程代码存放在Thread子类run方法'I'。实现Runnable:线程代码存在接口的了类的run方法。需求:简单的卖票程序。多个窗口同吋买票。多线程的运行出现了安全问题。问题的原因:当多条语句在操作同一个线

8、程共亨数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行。导致共享数据的错误。解

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

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

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