- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11.3 SWT中的线程 11.3.2 其他线程访问GUI线程 Display对象中负责调用其他线程的方法有以下3种: (1) asyncExec(Runnable runnable):异步启动新的线程。 (2) syncExec(Runnable runnable):同步启动新的线程。 (3) timerExec(int milliseconds, Runnable runnable):指定一段时间再启动新的线程。 11.3 SWT中的线程 11.3.2 其他线程访问GUI线程 另外Display对象中,与GUI线程相关的方法如下所示: (1) 获得当前的GUI线程对象的方法:getThread(),返回Thread对象。 (2) 使GUI线程处于休眠状态:sleep (3) 唤醒GUI线程:wake()。 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 在Java多线程并发执行的情况下,线程共享系统资源保护问题就成为多线程应用程序设计过程中的敏感问题。 共享资源是多个用户线程均有机会和能力去访问和修改的变量和对象实例等,在银行、通信等应用领域,如果没有共享资源的合理保护措施,这些资源的稳定性、安全性就受到质疑。 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 在多线程执行过程中均需要使用打印机、套接字对象等系统资源也存在共享管理问题,以避免多个线程为争夺同一个资源的使用而导致线程死锁。 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 Java语言中,为了保证线程对共享资源操作的完整性,用关键字synchronized为共享资源加锁来解决。 此锁使共享资源对线程是互斥操作的,称为互斥锁。每个共享资源对象都有一个“互斥锁”的标记(简称锁标志),保证任一时刻只有一个线程访问该对象。 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 Java语言中,关键字synchronized的运用在其中起着重要的作用。其语法格式由三种情况: (1) 加在代码段前限制代码,格式为: public void push(char c){ synchronized(this){ data[index]=c; index; }} 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 (2) 放在方法声明中修饰方法,其格式为: public synchronized void push(char c){ … } 11.3 SWT中的线程 11.3.3 线程的同步控制 1. 同步控制与互斥锁 (3) 若用在类声明中,该类中所有方法都是互斥资源。 在Java中,通过wait()和notify()或notifyAll()方法来实现线程间的相互协调。wait()方法可以使线程释放锁标志进入等待状态。当其他资源释放资源时,会调用notify()(或notifyAll())方法唤醒等待队列中的线程,使其获得资源恢复执行。 11.3 SWT中的线程 11.3.3 线程的同步控制 2. 生产者与消费者 某个地方有一个汉堡包店。店中,有一个负责做汉堡包的厨师,还有一个负责销售汉堡包的营业员,当然也有一个用来存放汉堡包的箱子。 厨师不停地做汉堡包,每做好一个,就放入箱子中。并且,每当客人来的时候,营业员都要从箱子中取出一个汉堡包卖掉。厨师每生产一个汉堡,营业员都会销售一段时间。 11.3 SWT中的线程 11.3.3 线程的同步控制 2. 生产者与消费者 假设来本店买汉堡包的客人络绎不绝,那么就会出现汉堡包被售完,汉堡包箱子变空的情况: 营业员打开汉堡包箱子,发现它是空的,这时,营业员要暂时等待一会儿。厨师做好汉堡并放入箱子,然后通知营业员,处于等待状态中的营业员被唤醒将汉堡包从箱子中取出,卖给顾客。 第11章 Java线程 第11章 Java线程 多线程技术是Java平台的一个重要的技术优势,本章将详细介绍和分析Java多线程的编程方法和技巧,主要包括线程的基本概念、创建与生命周期、优先级与执行顺序、死锁问题等。 11.1 线程简介 11.1.1 线程的基本概念 1. 进程 把正在计算机中执行的程序叫做“进程”, 而不将其称为“程序”。进程代表了主动的对象, 是正在计算机中一条指令接着一条指令地执行着的对象. 同时, 它还占用某些系统资源. 也就是说,
文档评论(0)