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

  • 相关阅读:
    8.18学习日志
    8.17学习日志
    8.15学习日志
    8.14学习日志
    8.13学习日志
    8.12学习日志
    8.11学习日志
    kindle
    xcode 4 安装cocos2d-x 2.1.4
    GUI之CCControlExtension
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/8758226.html
Copyright © 2011-2022 走看看