zoukankan      html  css  js  c++  java
  • 线程的同步

    web中服务器是靠启多线程  来应付多个用户同时请求的,这个我们用debug时候可以看到的。

    如果用spring建web项目,项目中的类都是单例的,同时来多个请求的时候,会有线程安全问题。

    如果用@scope("prototype")将某个servlet改成多例,同时有多个请求时候,一个实例对应一个请求(即一个线程),不会有线程安全问题。

    但是多例并不会提高效率,

    再说同步,在做自动生成流水号机制时候,从查出当前最大的流水号,自增1,然后到保存,这一段要加同步

    静态同步函数的锁是该类的字节码文件对象

    非静态同步函数锁是this

    public void generate(){}//自动生成流水号

    要将这个方法变成同步的,直接public synchronized void generate()

    同步是不是起作用,是不是能锁住线程,跟加不加静态没有关系,跟是不是多例也没有关系。。只跟锁有关系,锁的值填错了就锁不住线程。

    如何测试同步是否起作用,在public synchronized void generate()已经加了同步的方法里面打上断点,在进入该方法前面再打一个断点,先发送一次请求在断点处停住,不要释放,然后再发送一次请求,在进入方法前停住debug,看看往下走能否进入方法体,还是一直在等待。。这个是我旁边的同事想出来的方法嘻嘻嘻嘻。

  • 相关阅读:
    关于p标签
    用unescape反编码得出汉字
    一个未知高度垂直居中的简单方法
    发现个div float的小秘密
    w3cschool关于list-style-position时的另外发现
    oracle 11gR2默认密码修改
    程序员的十楼层。看看自己在第几层
    Steve Yegge:Google面试秘籍
    为学Linux,我看了这些书
    程序员的困境
  • 原文地址:https://www.cnblogs.com/konglei1989/p/4192994.html
Copyright © 2011-2022 走看看