03 对象锁的同步和异步

同步:synchronized

同步的概念就是共享,如果不是共享的资源就没必要进行同步。

异步:asynchronized

异步的概念就是独立,相互之间不受任何制约。

同步的目的是为了线程安全,其实对于线程安全来说需要满足两个特性:

原子性(同步)

可见性

 

示例:

/**

 * 对象锁的同步和异步问题

 * @author Vision_TXG

 *

 */

public class MyThread03 {

public synchronized void method1() {

try {

System.out.println(Thread.currentThread().getName());

Thread.sleep(4000);

}catch(Exception e) {

e.printStackTrace();

}

}

/**synchronized*/

//注意在method2上加synchronized锁的输出结果

public /*synchronized*/ void method2() {

System.out.println(Thread.currentThread().getName());

}

public static void main(String[] args) {

final MyThread03 m = new MyThread03();

Thread t1 = new Thread(new Runnable() {

 

@Override

public void run() {

// TODO Auto-generated method stub

m.method1();

}

},"t1");

Thread t2 = new Thread(new Runnable() {

 

@Override

public void run() {

// TODO Auto-generated method stub

m.method2();

}

},"t2");

t1.start();

t2.start();

}

}

 

示例总结:

T1线程先持有对象的Lock锁,T2线程如果在这个时候调用对象中的同步(synchronzied)方法则需要等待,也就是同步。

T1线程先持有对象的Lock锁,T2线程可以以异步的方式调用对象中非synchronized修饰的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值