网站大量收购独家精品文档,联系QQ:2885784924

物联网培训-03_Java线程.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

线程间通信洗车(面向对象)*线程间通信Main方法*线程间通信生产者消费者问题有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)。要求:仓库中每次只能入一人(生产者或消费者)。仓库中可存放产品的数量最多10个,当仓库放满时,生产者不能再放入产品。当仓库空时,消费者不能从中取出产品。生产、消费速度不同。*线程间通信Lock与ConditionSynchronized的缺点:性能,以及功能上的一些限制使它无法中断一个正在等候获得锁的线程,也无法通过投票得到锁,如果不想等下去,也就没法得到锁JDK1.5引入了新的锁定机制,在concurrent.locks包下面。其中新增了Lock与Condition,可以明确的在程序中进行明确的锁与释放锁。*线程间通信Lock是一个接口 其中定义了lock()、unclock()与newCondition()三种方法。lock()用来取得对象的锁。unlock() 用来释放对象的锁,通常由同一个Lock对象来调用lock()与unlock()。newCondition() 建立一个与Lock对象相关联的Conditon对象。*线程间通信Condition是一个接口,作用是在执行线程之间进行交互。await() 告知目前的执行线程等待,直到被通知或中断(interrupted)。signal() 通知目前等待中的一个线程,从上次的等待点继续执行,类似对象的notify()方法。signalAll() 通知目前等待中的所有执行线程,而后从上次的等待点继续执行,类似对象的notifyAll()方法。*线程间通信线程管道流用于将一个线程的输出连接到另一个线程的输入PipedReader/PipedInputStream实现管道的输入PipedWriter/PipedOutputStream实现管道的输出**主要内容线程的概念创建和启动线程线程的生命周期线程同步线程间通信线程的常用方法线程池技术线程的常用方法使调用它的线程立即停止执行。(弃用) publicfinalvoidstop()使线程挂起,暂停运行。(弃用) publicfinalvoidsuspend()恢复挂起的线程,使其处于可运行状态(弃用) publicfinalvoidresume()*都已弃用,如何来停止线程线程的常用方法等待该线程终止。 publicfinalvoidjoin()*线程的常用方法join()方法*Main方法线程的常用方法停止线程运行interrupt()方法(线程非运行状态)当sleep方法被调用。当wait方法被调用。当被I/O阻塞,可能是文件或者网络等等。定义变量*线程的常用方法中断等待线程 注:中断线程抛出InterruptedException异常 publicvoidinterrupt() 例子:*线程的常用方法Java将线程分为User线程和Daemon线程两种。User线程:Java虚拟机在它所有非守护线程已经离开后自动离开。Daemon线程:守护线程即后台线程。用来服务用户线程的,当所有的非后台线程结束时,程序也就终止了,同时会杀死所有Daemon线程。*线程的常用方法将该线程标记为守护线程或用户线程 publicfinalvoidsetDaemon(booleanon)通过setDaemon(true)设置线程为守护线程。注意:setDaemon()方法必须在调用线程的start()方法之前调用。一旦一个线程开始执行,它的daemon状态不能再修改。方法isDaemon()可以知道一个线程是否Daemon线程。守护线程中产生的线程也是守护线程,用户线程同样。*线程的常用方法setDaemon()方法*用户线程守护线程线程的常用方法线程优先级设置线程优先级。 publicfinalvoidsetPriority(int?newPriority)返回线程优先级。 publicfinalintgetPriority()优先级级别:1~10(值越大,优先级越高)*线程的常用方法默认main方法也就是主线程的级别是5 System.out.println(Thread.currentThread().getPriority()); 输出:5注意1:Java的调度器能使高优先级的线程始终运行,一旦

文档评论(0)

yzs890305 + 关注
实名认证
内容提供者

计算机二级持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年11月02日上传了计算机二级

1亿VIP精品文档

相关文档