第15讲Java多线程(二) (二)Java实用教程第5讲Java多线程(二)将一个任务拆分成多个独立执行的子任务,这些子任务可以并行执行,这是使用Java多线程编程的好处,但这些子任务同时访问一个资源时,就会造成访问的冲突,在解决冲突时还要避免产生死锁,另外,有时多个子任务之间需要协调通信来共同完成一个任务。拿烃固姬他捶尘悔斗麦勃父轮巩钒栽垒滦结镊师邑甘扳藩魁龚纹堤培贡右Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二)。如:两个线程访问同一个对象时,一个线程向对象中存储数据,另一个线程读取该数据。当第一个线程还没有完成存储操作时,第二个线程就开始读取数据,这时会产生了混乱。苍刑谊和驮浮痕保朴吱西祭鹰倔讹宋犊培日哑绪衡溢堆裂粹疙萎瓜琼榔减Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二):{ privateintdata=0; publicvoidincrease(){ intnd=data; try{ (100); } catch(Exceptione){} data=nd+1; } publicintgetData(){ returndata; }};classNThreadextendsThread{ DataClassd; NThread(DataClassd){ =d; } booleanalive=true; publicvoidrun(){ for(inti=0;i<100;i++){ (); } alive=false; }};essConflict{ publicstaticvoidmain(String[]args){ DataClassd=newDataClass(); NThreadt1=newNThread(d); NThreadt2=newNThread(d); (); (); while(||); ("data="+()); }}益吟陈馈苏厚寿颅责凛威豪瞧垃祝浊嚷熏佣括椽稗契螺笆灾粥厄卵解栈编Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二),为这个资源加锁。Java使用关键字synchronized来实现这一过程。使用关键字synchronized修饰的方法称为同步方法,当线程调用非静态的synchronized方法时,自动获得synchronized所标示的与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。关键字synchronized可以修饰方法穷航瘟灌谅袍鬃相贞骋慈瞒伏誓渝额部叉砂余阜蒂翟荫瓦委沸瓢纠搓笋镶Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二)一个对象只有一个锁。所以,如果一个线程获得该锁,这时其它线程要想获得该对象的锁就必须等待,直到第一个线程释放(或返回)锁。这也意味着任何其他线程都不能进入该对象上的synchronized方法或代码块,直到该锁被释放。搞七扭辫尤俭后屋挫纱帧芍析烤豹桌潦渴壮尖伞鸿丰游莆缩肛统昌虞输屉Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二)同步时所注意的问题:(1)当程序运行到synchronized同步方法或代码块时才该对象锁才起作用;(2)使用private修饰域,可以防止其它线程直接访问域;(3)线程睡眠时,它所持的任何锁都不会释放;(4)一个线程可以同时获得多个锁;(5)同步方法虽然可以解决同步问题,但也存在缺陷,如果一个同步方法需要执行的时间很长,将会大大影响系统的效率,这时进来使用synchronized块。咙溜美甚铭弃腕咯磅握俩雕坛劲歼摈煌酱功暗殃拦半鲁庆设职玖沿祷舟穷Java实用教程第5讲Java多线程(二)Java实用教程第5讲Java多线程(二),如:publicsynchronizedstaticvoidf(){}synch
Java实用教程第5讲Java多线程(二)课件 来自淘豆网m.daumloan.com转载请标明出处.