线程同步(1)——synchronized

来源:互联网 发布:gd单片机官网 编辑:程序博客网 时间:2024/06/08 16:27

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

    

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


利用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();  //执行语句}}


    线程同步在多用户操作系统是不得不考虑的一个问题,也是一个特别重要的问题。这是在代码中直接利用java关键字去实现线程同步,下一篇要介绍利用sql语句中悲观锁实现线程同步。



0 0
原创粉丝点击