a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 1

[其他] JAVA技巧:线程等待和释放的小麻烦

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
对于初学者来说,下面这个例子是一个很是常见的错误。   /**
  G& E, o' E- b8 z  q% y3 T  *  线程A: 轮回50次后期待并抛却锁,让线程B执行。
" N* S% T' E3 l  */. h4 Q6 M2 `! \6 h8 ]0 y0 n, e
  class ThreadA extends Thread{
1 l3 N& W% Z4 R2 X: r  //线程同步的公共数据区
9 g0 T5 d: O2 p5 U7 e, C  Object oa=null;
8 Y, ?( l. P2 J7 @6 P. f6 L* h  ThreadA(Object o){, J3 x1 Z" X# L
  this.oa=o;6 _; Z8 V* W) U7 }* E" Z8 e) q3 s
  }3 b4 b) Z7 [# p3 @  F
  //线程A执行逻辑# }( y) {7 c3 q0 n. }
  public void run(){
- T7 Q/ T' ?* q1 [& j; |  //线程同步区域,需要申请公共数据的锁
; v2 `1 g, L* W* |! {7 B/ [3 J! ?  synchronized(oa){
, i3 V  _3 Z; b1 s2 _' ~* p) s6 M- O3 F  System.out.println("ThreadA is running......");
( U+ D" V1 o" ^, {. \* H" g& A( I- D7 u# {6 W
  for(int i=0;i
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:24 | 显示全部楼层

JAVA技巧:线程等待和释放的小麻烦

</p>  //线程B执行逻辑4 \* c% A% I. {1 q# p& D& L1 l
  public void run(){
3 V( r$ A- f' y3 |  //线程同步区域,需要申请公共数据的锁- p0 Q) G* @6 z/ R
  synchronized(ob){- f' B! s7 {! j$ \- w# ^: ~% G
  System.out.println("ThreadB is running......");
* o1 p  Z% F$ \; f/ Z7 z& \
8 t5 H3 }, H3 }) q9 l4 [; x  for(int i=0;i
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 23:57 , Processed in 0.189977 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表