原文
Synchronized 锁的使用和原理
synchrolized
是java
的一个关键字,加锁方式有: 对象锁、类锁,其用法有:
- 普通同步方法,锁是当前实例对象
- 静态同步方法,锁是当前类的class对象
- 同步方法块,锁是括号里面的对象
synchronlized的使用
对象锁
方法锁: 默认所对象为this
,当前实例对象
public class SynchronizedMethodLock implements Runnable{
static SynchronizedMethodLock instence = new SynchronizedMethodLock();
@Override
public void run() {
method();
}
public synchronized void method() {
System.out.println("我是线程" + Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束");
}
public static void main(String[] args) {
Thread thread1 = new Thread(instence);
Thread thread2 = new Thread(instence);
thread1.start();
thread2.start();
}
}
同步代码块锁: 手动指定锁定对象(this
或者自定义锁)
- this
public class SynchronizedThisLock implements Runnable{
static SynchronizedThisLock instence = new SynchronizedThisLock();
@Override
public