• 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

  • 相关阅读:
    JS的IE和FF兼容性问题汇总
    解决flash挡住层的问题
    javascript 代码优化工具 UglifyJS
    理解面向对象
    js中的等号与非等号
    js 的数据类型转换
    js优化 ----js的有序加载
    各浏览器对页面外部资源加载的策略
    js 执行效率
    脚本的加载,解析,与执行
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/8758226.html
Copyright © 2020-2023  润新知