zoukankan      html  css  js  c++  java
  • synchronized(三)

    package com.bjsxt.base.sync003;

    /**
    * 对象锁的同步和异步问题
    * @author alienware
    *
    */
    public class MyObject {

    public synchronized void method1(){
    try {
    System.out.println(Thread.currentThread().getName());
    Thread.sleep(4000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    /** synchronized */
    public void method2(){
    System.out.println(Thread.currentThread().getName());
    }

    public static void main(String[] args) {

    final MyObject mo = new MyObject();

    /**
    * 分析:
    * t1线程先持有object对象的Lock锁,t2线程可以以异步的方式调用对象中的非synchronized修饰的方法
    * t1线程先持有object对象的Lock锁,t2线程如果在这个时候调用对象中的同步(synchronized)方法则需等待,也就是同步
    */
    Thread t1 = new Thread(new Runnable() {
    public void run() {
    mo.method1();
    }
    },"t1");

    Thread t2 = new Thread(new Runnable() {

    public void run() {
    mo.method2();
    }
    },"t2");

    t1.start();
    t2.start();

    }

    }

    method2()前面不加synchronized,运行结果:

    t1

    中间不间隔

    t2

    method2()前面加上synchronized,运行结果:

    t1

    中间间隔4秒。。。。

    t2

  • 相关阅读:
    三、python语法(定义,赋值,注释,输入输出)
    二、Python安装
    一、python简介
    Java第十二天
    Java第十一天
    Java第十天
    Java第九天
    Java第八天
    Java第七天
    Java第六天
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/8758226.html
Copyright © 2011-2022 走看看