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

  • 相关阅读:
    搞清楚C#中的值类型(基础类型)和引用类型
    构造动态SQL语句
    Json.net API及常用方法
    泛型代码中的default有何作用
    SQL 中的for xml path()的使用
    fastJosn和JackJson的区别
    箭头函数
    3篇文章初探MVC工作流程
    MVC传递Model之TempData、ViewData、ViewBag区别和用途
    .Net 提交页面,js修改的Label值会丢掉
  • 原文地址:https://www.cnblogs.com/konglei1989/p/4192994.html
Copyright © 2011-2022 走看看