zoukankan      html  css  js  c++  java
  • 用synchronized实现互斥锁

    package seday10;
    /**
    * @author xingsir
    * 互斥锁
    * 当使用synchronized锁定多个代码片段,并且他们指定的同步监视器对象是同一个时,那么这些代码片段之间就是互斥的,
    * 多个线程不能同时在这些代码片段中运行。
    */
    public class syncDemo4 {

    public static void main(String[] args) {
    Boo boo = new Boo();//实例化
    Thread t1 = new Thread() {//线程一
    public void run() {
    boo.mA();//调用方法
    }
    };
    Thread t2 = new Thread() {//线程二
    public void run() {
    boo.mB();//调用方法
    }
    };
    t1.start();//启动
    t2.start();//启动

    }

    }
    class Boo{
    public synchronized void mA() {//synchronized锁定多个代码片段
    try {
    Thread thread =Thread.currentThread();//主线程
    System.out.println(thread.getName()+":mA方法正在执行...");//打印
    Thread.sleep(5000);//休眠5000毫秒
    System.out.println(thread.getName()+":mA方法执行完毕");//打印
    } catch (Exception e) {
    // TODO: handle exception
    }

    }

    public void mB() {
    synchronized(this) {//synchronized锁定多个代码片段
    try {
    Thread thread=Thread.currentThread();//主线程
    System.out.println(thread.getName()+":正在执行mB方法...");//打印
    Thread.sleep(5000);//休眠5000毫秒
    System.out.println(thread.getName()+":执行mB方法完毕!");//打印
    } catch (Exception e) {
    e.printStackTrace();

    }
    }
    }

    }

  • 相关阅读:
    个人常用Git操作记录
    JavaScript引擎基本原理:Shapes和Inline Caches
    Promise.then(a, b)与Promise.then(a).catch(b)问题详解
    p标签中的文本换行
    Vue初始化
    关于vue的源码调试
    关于extjs表单布局的几种方式
    sublime text3安装、注册及常用插件
    chrome扩展程序开发
    关于Git的简单使用
  • 原文地址:https://www.cnblogs.com/xingsir/p/12083814.html
Copyright © 2011-2022 走看看