您的位置:首页 > 编程语言 > Java开发

一、Java并发编程基础篇(003)同步异步

2017-12-06 21:39 295 查看
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() {

            @Override

            public void run() {

                mo.method1();

            }

        },"t1");

        

        Thread t2 = new Thread(new Runnable() {

            @Override

            public void run() {

                mo.method2();

            }

        },"t2");

        

        t1.start();

        t2.start();

        

    }

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: