毕向东java基础-预热讲义_第1页
毕向东java基础-预热讲义_第2页
毕向东java基础-预热讲义_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京传智播客教育Java预热班培训课程第五讲多线程讲师:付东北京传智播客教育多线程进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动线程(例:FlashGet)线程是进程的一个实体,是CPU调度和分派的基本单位进程和线程的区别简而言之,一个程序至少有一个进程,一个进程至少有一个线程多线程存在的意义程序允许多个线程并发,提高程序的运行效率线程的创建方式newThread().start()北京传智播客教育多线程的应用创建一个线程Sun公司为我们提供了Thread类来实现线程通过newThread()创建一个线程对象定义一个类继承Thread类,子类就具有了线程的功能创建Thread类的子类对象,也可以创建一个线程线程的启用Thread类定义了start方法,用于启用当前线程在启用一个线程时,虚拟机会自动调用对象的run方法线程的其他方法sleep:使线程进入睡眠状态,需要制定唤醒时间,会抛异常setDaemon:将当前线程置为一个守护线程join:合并线程,会抛异常currentThread:获得当前运行的线程北京传智播客教育创建线程方式二实现Runnable接口子类覆盖接口中的run方法。通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。Thread类对象调用start方法开启线程。思考:为什么要给Thread类的构造函数传递Runnable的子类对象?北京传智播客教育线程安全问题导致安全问题的出现的原因:多个线程访问出现延迟。线程随机性。火车售票的例子注:线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的。北京传智播客教育同步(synchronized)同步代码块格式:synchronized(对象){

需要同步的代码;}同步可以解决安全问题的根本原因就在那个对象上。 该对象如同锁的功能。北京传智播客教育同步函数格式:

在函数上加上synchronized修饰符即可。

publicsynchronizedvoidsale(){ …… }思考:同步函数用的是哪个锁呢?死锁发生在互相调用的情况,一个同步函数里要用到和同步代码块相同的锁,同步代码块中又去调用函数,就用到函数的锁,两者就会互相锁死。发生死锁问题。北京传智播客教育同步的特点同步的前提:同步需要两个或者两个以上的线程。多个线程使用的是同一个锁。未满足这两个条件,不能称其为同步。同步的弊端:

当线程相当多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。北京传智播客教育线程间的通信两个线程之间可以互相通信一个线程可以通过wait方法等待,这时cpu会让给别的线程进行等待的线程需要其他线程调用notify方法将其唤醒notify方法只能唤醒在调用方法的对象上等待的线程应用场景多线程访问数据库修改数据库的线程需要和查询数据库的线程进行通信思考wait(),notify(),notifyAll(),用来操作线程为什么定义在了Object类中?wait(),sleep()有什么区别?北京传智播客教育停止线程定义循环结束标记因为线程运行代码一般

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论