线程同步-synchronized

先说什么是线程同步,其实线程同步是说让预定的先后顺序去执行。当用户进行一个调用时,在没有得到结果之前,其它线程不能调用这个方法。

在工作中遇到这样一个问题,有一张表,它的作用就是为其他表提供主键数据,如果多个用户同时访问这张表,那就存在共享资源的问题,简单说就是容易产生脏数据,那这里就涉及到线程同步的问题。

利用synchronized是一种解决方案。分两类锁。

1.对类加锁
将synchronized加到静态方法上,对类加锁。因为静态方法属于类

public static synchronized int generate(String tableName){  
//方法体...  
}  

2.对对象加锁

在范围关键字后面去加入关键字synchronized;对某一块代码使用synchronized(this),这个方法只能一次只有一个线程进行调用,当方法执行完毕以后,其他线程才能进入。,例如synchronized(this)可以放到访问数据的执行语句块,保证了每次只有一个线程访问。

public  synchronized int generate(String tableName){  
//方法体...  
}  
  
  
public int generate(String tableName){  
//方法体....  
    synchronized(this) {          
        pstmt.executeQuery();  //执行语句  
    }  
  
}  

你可能感兴趣的:(线程同步-synchronized)