黑马程序员【Java基础】多线程--多线程概念

上传人:宝路 文档编号:23923964 上传时间:2017-12-04 格式:DOC 页数:3 大小:141.57KB
返回 下载 相关 举报
黑马程序员【Java基础】多线程--多线程概念_第1页
第1页 / 共3页
黑马程序员【Java基础】多线程--多线程概念_第2页
第2页 / 共3页
黑马程序员【Java基础】多线程--多线程概念_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《黑马程序员【Java基础】多线程--多线程概念》由会员分享,可在线阅读,更多相关《黑马程序员【Java基础】多线程--多线程概念(3页珍藏版)》请在金锄头文库上搜索。

1、1、进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间。2、线程:进程中的一个执行单元,负责进程中的程序的运行,一个进程中至少要有一个线程。一个进程中可以有多个线程的,这个应用程序也可以称之为多线程程序。3、程序启动多线程,有什么应用呢?可以实现多个程序同时执行,专业术语称为并发。多线程的使用可以合理使用 cpu 的资源,如果线程过多导致降低性能。4、创建线程的方式两种方式:4.1、继承 Thread4.1.1、定义一个类继承 Thread4.1.2、重写 run 方法4.1.3、创建子类对象4.1.4、启动 start 方法4.2、实现 Runnable4.2.1、定义类实现 ru

2、nnable 接口4.2.2、覆盖接口中 run 方法,将线程任务代码定义到 run 方法里。4.2.3、创建 Thread 类的对象。4.2.4、将 runnable 接口的子类对象作为参数传入 Thread 类的构造方法里。4.2.5、启用 Thread 类的 start 方法。5、线程对象调用 run 方法和调用 start 方法区别?调用 run 方法不开启线程,近视对象调用方法。调用 start 方法开启线程,并让 JVM 调用 run 方法在开启的线程中执行。6、创建线程的目的是什么?是为了建立单独的执行路径,让多部分代码实现同时执行。也就是线程创建并执行需要给定的代码(线程任务)

3、。7、多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间。进行方法的压栈和弹栈。当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了。8、Thread 与 Runnable 的区别 Runnable 接口避免了单继承的局限性。实现 Runnable接口的方式,更加符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务。继承 Thread 类:线程对象和线程任务耦合在一起。一旦创建 Thread 类的子类对象,既是线程对象,又有线程任务。将线程任务单独分离出来封装成对象,类型就是 runnable接口类型。实现 Runnab

4、le 接口对线程对象和线程任务进行解耦。9、线程的运行状态被创建:运行:该状态是线程具备了 CPU 执行资格的同时也具备了执行权,一个时刻只能有一个线程在执行。消亡:当 run 方法结束,线程就进入了消亡状态。冻结:释放了 CPU 的执行权和执行资格,有两种方式:sieep(休眠)、wait (等待),同时也有两种方式解除此状态,sleep(时间到)、notify()要注意的时,当线程从冻结状态结束后,并没有立马运行,只能说它获取了 CPU 的执行资格,因为随机性的原因,它也可能转换成临时阻塞状态。临时阻塞状态:线程具备 CPU 的执行资格,不具备执行权,正等着CPU 切换到它运行。file:

5、/C:/Users/ds/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg10、多线程的安全性问题的原因10.1 多个线程在操作共享的数据。10.2 线程任务操作共享数据的代码有多条(运算有多个)。解决问题:用同步代码块synchronized 同步的好处:解决多线程的安全问题。同步的弊端:降低了程序的性能。同步的前提:必须保证多个线程在同步中使用的是同一个锁。同步的另一种体现形式:同步函数。同步函数使用的锁是 this。11、多线程安全问题-同步函数使用的锁和同步代码块的区别同步函数使用的锁是固定的this。同步代码块使用的锁可以是任意

6、对象。12、静态同步函数使用的锁不是 this,而是字节码文件对象类名.class。13、单例设计模式 13.1 恶汉式:代码体现:Class SinglePrivtae static final Single s=new Single();Private Single()Public static Single getInstance()Return s;13.2、懒汉式:延迟加载,存在着多线程并发访问的安全问题,需要使用同步来解决安全问题,但是同步会降低效率,所以使用双重 if()判断形式解决效率低的问题。实现代码:Class SinglePrivate Single()Private static Single s=null;Public static Single getInstance()If(s=null)Synchroinzed(Single.class)If(s=null)S=new Single();Return s;14、死锁:即同步的弊端,不是线程和进程没有了,而是不动了。表现形式:同步嵌套的时候,使用的锁不一样,容易引发死锁。实现代码:/Thread-0Synchroinzed(obj1)Synchroinzed(obj2)/Thread-1Synchroinzed(obj2)Synchroinzed(obj1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号