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,看看往下走能否进入方法体,还是一直在等待。。这个是我旁边的同事想出来的方法嘻嘻嘻嘻。

  • 相关阅读:
    flask_第一个程序
    Web框架_MVC vs MVT
    python_使用qrcode生成二维码
    HDU 4641
    SPOJ NSUBSTR
    SPOJ LCS2 多个串的最长公共子串
    SPOJ LCS 后缀自动机找最大公共子串
    POJ 1509 循环同构的最小表示法
    HDU 4821 字符串hash
    SPOJ GSS1 静态区间求解最大子段和
  • 原文地址:https://www.cnblogs.com/konglei1989/p/4192994.html
Copyright © 2011-2022 走看看