java多线程编程之多线程编程之Synchronized关键字详解关键字详解
主要为大家详细介绍了java多线程编程之Synchronized关键字,感兴趣的朋友可以参考一下
本文介绍JAVA多线程中的synchronized关键字作为对象锁的一些知识点。
所谓对象锁,就是就是synchronized 给某个对象 加锁。关于 对象锁 可参考:这篇文章
一、分析一、分析
synchronized可以修饰实例方法,如下形式:
public class MyObject {
synchronized public void methodA() {
//do something....
}
这里,synchronized 关键字关键字锁住的是当前对象。这也是称为对象锁的原因。
为啥锁住当前对象?因为 methodA()是个实例方法,要想执行methodA(),需要以 对象.方法() 的形式进行调用
(obj.methodA(),obj是MyObject类的一个对象,synchronized就是把obj这个对象加锁了)。
上面代码也可写成这样:
public class MyObject {
public void methodA() {
synchronized(this){
//do something....
}
}
二、特点二、特点
使用synchronized关键字同步一个明显的特点是:MyObject类中定义有多个synchronized修饰的实例方法时,若多个线程拥有
同一个MyObject类的对象,则这些方法只能以同步的方式执行。即,执行完一个synchronized修饰的方法后,才能执行另一
个synchronized修饰的方法。
如下:
public class MyObject {
synchronized public void methodA() {
//do something....
}
synchronized public void methodB() {
//do some other thing
}
}
MyObject类中有两个synchronized修饰的方法。
public class ThreadA extends Thread {
private MyObject object;
//省略构造方法
@Override
public void run() {
super.run();
object.methodA();
}
}
线程线程A执行执行methodA()
public class ThreadB extends Thread {
private MyObject object;
//省略构造方法
@Override
public void run() {
评论0
最新资源