欢迎来到天天文库
浏览记录
ID:50026568
大小:134.50 KB
页数:5页
时间:2020-03-04
《线程锁的使用.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、和风细雨世上本无难事,心以为难,斯乃真难O苟不存-难之见于心,则运用之术口出。vaJa笔1航°g贝随系合理导Bl首新联聚管V02008年2月>六一二三四五272829303112345678910111213141516171819202122益2425.益27282912345678989150■■■■计笔章论用统随文评引常用链接我的随笔我的评论我的参与最新评论留言簿(7)给我留言查看公开留言查看私人留言随笔分类CSS(8)(rss)DataBase/SQL(rss)EJB(rss)Hibernate(9)(rss)J2EE(1)(rss)J2SE(15)(rs
2、s)JavaScript(5)(rss)Jsp/Servlet(1)(rss)OOP(3)(rss)Spring(rss)Struts(2)(rss)Swing(9)(rss)XML(2)(rss)正则表达式(3)(rss)算法⑺(rss)线程(8)(rss)随笔档案2008年11月(1)2008年8月(1)线程锁的使用本文内容何时该使用线程锁.线程锁的写法.以线程锁的例子来理解线程的调度。使用线程锁的场合程序屮经常采用多线程处理,这可以充分利用系统资源,缩短程序响应时间,改善用户体验;如果程序屮只使用单线程,那么程序的速度和响应无疑会大打折扣。但是,程序采用了多
3、线程后,你就必须认真考虑线程调度的问题,如果调度不当,要么造成程序出错,要么造成荒谬的结果。一个讽刺僵化体制的笑话前苏联某官员去视察植树造林的情况,现场他看到一个人在远处挖坑,其后不远另一个人在把刚挖出的坑逐个填上,官员很费解于是询问陪同人员,为地管理人员说“负责种树的人今天了*0匕面菽个笑话如果发生在程序屮就是线程调度的问题,种树这个任务有二个线程:挖坑线程,种树线程和填坑线程,后面的线程必须等前一个线程完成才能进行,而不是按时间顺序来进行,否则一旦一个线程出错就会出现上面荒谬的结果。用线程锁来处理两个线程先后执行的情况在程序屮,和种树一样,很多任务也必须以确定
4、的先后秩序执行,对于两个线程必须以先后秩序执行的情况,我们可以用线程锁来处理。线程锁的大致思想是:如果线程A和线程B会执行实例的两个函数a和b,如果A必须在B之前运行,那么可以在B进入b函数时让B进入waitset,ti到A执行完a函数再把B从waitset中激活。这样就保证「B必定在A之拆运行,无论在之前它们的时间先后顺序是怎样的。线程锁的代码如右,SwingComponentLock的实例就是一个线程锁,lock函数用于锁定线程,当完成状态isCompleted为false时进入的线程会进入SwingComponentLock的实例的waitset,已完成则不
5、会;要激活SwingComponentLock的实例的waitset屮等待的线程需要执行unlock函数。publicclassSwingComponentLock{//是否初始化完毕booleanisCompleted=false;/***锁定线程*/publicsynchronizedvoidlock(){while(!isCompleted){try{wait();}catch(Exceptione){e.printStackTrace();logger,error(e.getMessage());}}}2008年5丿J(1)2008年4月(9)2008年3
6、丿I(31)2008年2丿」(54)文章档案2007年2丿J(1)*解锁线程机册11搜索最新评论XML1.re:二分查找示例二(对链表进行查找)java中ArrayList不是链表,LinkedList才是軽表,而且链表是不支持二分查找的.--kevintse2.re:C/S架构和B/S架构的概念和区别谢谢~・・necon893.re:读写锁的使用相同线程会死锁read.lock()write」ock()write・unlock();read.unload();■・ydu4.re:JTabbedPane选项窗格的使用@何静昌tellnfoPanel=newJTab
7、bedPane();这个没有初始化■-HY5.re:分查找爪例一(对链表进行查找)评论内容较长,点击标题查看--tnt_vampire阅读排行榜1.Dom4j卜'载及使用Dom4j读写XML简介(11822)2.C/S架构和B/S架构的概念和区别(7744)3.Hashtable#本用法概述(7036)4.JTabbedPane选项窗格的使用(3981)JTable常见用法细则(3585)评论排行榜1.JTabbedPane选项窗格的使用(17)2.JTree树控件的使用(6)Dom4jF载及使用Dom4j读publicsynchronizedvoidunlock
8、(){is
此文档下载收益归作者所有