Synchronized
线程同步机制
1、在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就采用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性
2、也可以理解为:线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他内存才能对该内存地址进行操作
同步代码块:
Synchronized(对象){//得到对象的锁,才能操作同步代码块
//需要被同步的代码
}
Synchronized还可以放在方法声明中,表示整个方法-为同步方法
pubilc Synchronized void sell(){
//需要被同步的代码
}
class Dog implements Runnable {
int count = 0;
public synchronized void sell(){ //同步方法,在同一时刻,只能有一个线程在执行此方法
System.out.println("Hi:" + (++count) + " 线程名称= " + Thread.currentThread().getName());
// Ctrl + Alt + T
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (count == 10) {
return;
}
}
@Override
public void run() {//通过实践Runnable接口来实现线程
while (true) {
sell();
}
}
}