美文网首页
synchronized->初步认识

synchronized->初步认识

作者: 云鲸鱼rain | 来源:发表于2018-09-14 18:28 被阅读0次

这段话写于2019年3月6日,这篇文章的理解较为狭隘,我又写了一篇关于synchronized的文章。本来想删掉这篇,但是我写博客的目的是为了记录。又担心其他人看去了被误解,遂说明此情况。


https://www.cnblogs.com/QQParadise/articles/5059824.html处学习。
(仅供自己学习记录)
例子问题:

select * from student where name = 'john'

如果student表中没有john姓名,则添加。如果有,则不添加。
实际中当两个线程都进入某方法执行到sql语句,因为第一条线程还未执行sql的insert语句,所以两个线程执行sql的结果都为空,故两条线程都会执行sql的insert语句,结果为student表中有两个叫john的人。显然不对。
————————————
解决方法在函数上加锁。
试过

public synchronized void function{
   //代码块
}

试过

public void function{
  synchronized(this){
    //代码块
  }
}

结果都是两个线程同时执行代码块。根据以上链接学习总结:
synchronized锁住的是对象,而不是代码块。在实际中每个线程进入函数时,都会对应它自己的一个this对象,故锁住的对象只有当前线程拥有,锁就失去了意义。
正确方法:

class A
{
  public void function{
    synchronized(A.class)
    {
       //代码块
    }
  }
}

相关文章

  • synchronized->初步认识

    这段话写于2019年3月6日,这篇文章的理解较为狭隘,我又写了一篇关于synchronized的文章。本来想删掉这...

  • synchronized->再认识

    我之前写过一篇synchronized的文章,在那篇文章中,我说 解决方法在函数上加锁。试过 试过 结果都是两个线...

  • 初步认识

    初识C语言 开始 我从高三毕业假期开始涉及C语言学习,经过了九个月左右的学习,初步认识了这种语言的语法和具体特质。...

  • synchronized到objc_sync_enter/obj

    synchronized->objc_sync_enter/objc_sync_exit objc_sync_en...

  • BOM初步认识

    什么是BOM BOM:Browser Object Model 浏览器对象模型BOM是JavaScript组成之一...

  • 初步认识zookeeper

    什么是zookeeper zookeeper 是一个开源的分布式协调服务,由雅虎公司创建,是google chub...

  • [ZooKeeper]初步认识

    前言在学习任何技术知识的时候,一定要思考他的本质!3w原则想必都听过:why、what、how。大why,小wha...

  • 初步认识TCGA

    转自生信笔记http://www.bioinfo-scrounger.com/archives/271 肿瘤基因组...

  • Fiddler初步认识

    1、抓包工具有很多,为什么要使用Fiddler呢?原因如下: a.Firebug虽然可以抓包,但是对于分析http...

  • 初步认识“运营”

    运营一直以来给我的感觉是一种很抽象的东西,他有点类似带团队、经营一个网店或项目。其实运营还真是五花八、各种各样 。...

网友评论

      本文标题:synchronized->初步认识

      本文链接:https://www.haomeiwen.com/subject/gefagftx.html