Java多线程间的同步互斥

/**
 *  * 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,
 * 一个时间内只能有一个线程得到执行。
 * 另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
 */
package process;
public class syn{

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  MyThread t1=new MyThread();
  Thread ta=new Thread(t1,"A");
  Thread tb=new Thread(t1,"B");
  ta.start();
  tb.start();
 }
}
class MyThread extends Thread{
 public static int i=0;
 public synchronized void run(){
  for(int i=0;i<10;i++){
   System.out.println(Thread.currentThread().getName()+" synchronized loop "+i);
   System.out.println(Thread.currentThread().getName()+" ================== "+i);
  }
  
 }
}

  synchronized代码期间,如果另一个线程B也要执行同一对象的一段synchronized代码时(不一定与线程A执行的相同),它将

  要等到线程A执行完后,才能继续....

  问题:如何利用wait() notify() notifyAll()?

  在synchronized代码被执行期间,线程可以调用对象的wait()方法,释放对象锁标志,进入等待状态,并且可以调用notify()或者notifyAll()方法通知正在等待的其他线程。notify()通知等待队列中的第一个线程,notifyAll()通知的是等待队列中的所有线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值