Java 同步代码块
同步代码块
Java中使用synchronized关键字来声明同步代码块,也就是所谓的“锁”,它可以有效地防止多 个线程同时访问同一个代码块而造成的冲突。synchrcmized定义代码块格式如下:
synchronized(Object) {
//代码块
}
共享代码块通常放在synchronized定义的区域内,当线程访问这个代码块时,首先会检测这个 代码块是否被其他线程“锁住”了,如果已被“锁住”,则直到其他线程使用完,锁被释放了, 这个代码块才可以继续被访问。Ohject类会标识出这个对象是否被锁,与这个类相关联的线程可以 互斥地使用该类对象的锁。下面看一个使用synchmnizwl关键字声明同步代码块的示例。
//线程安全
public class ThreadSafe implements Runnable {
private Integer key = 0;
@Override
public void run() {
synchronized (key){
key++;
System.out.println(((Thread) Thread.current()).getName()+":"+ key);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
public static void main(String[] args) {
ThreadSafe threadSafe = new ThreadSafe();
for(int i=0; i<10; i++) {
new Thread(threadSafe, "线程"+ i).start();
}
}
}
点击加载更多评论>>