iyuks 2021-08-09 11:31 采纳率: 86.2%
浏览 1192
已结题

Controller方法加了synchronized , service的方法就不用加synchronized 了吧?

Controller方法加了synchronized , service的方法就不用加synchronized 了吧?假如说这个service只有这一个Controller调用。

这样就能做到只有一个线程访问,对吗?

  • 写回答

6条回答 默认 最新

  • 山河已无恙 云原生领域优质创作者 2021-08-09 11:53
    关注

    嗯,个人感觉加在 service 要好一点,因为串行化的代码变短了。而且处理逻辑的也是在service。加到入口,那么controller,service线程都是串行的,类比HashmapCounrrentHashmapCounrrentHashmap里面有个分段锁,就是为了缩短synchronized修饰的区域。

    可以对比这两种单例的写法:

    • 懒汉式加同步方法

      public class Singleton {
        // 实例变量
        private byte[] bate = new byte[1024];
        // 私有的构造函数,即不允许外部 new
        private Singleton(){ }
      
        private static  Singleton singleton =null;
        public static synchronized Singleton getInstance0(){
            if (singleton == null) {
                singleton = new Singleton();
            }
            return singleton;
        }
      
    • 双重效验锁单例

      public class Singleton {
        // 实例变量
        private byte[] bate = new byte[1024];
        // 私有的构造函数,即不允许外部 new
        private Singleton(){ }
      
        private  static volatile Singleton singleton2 = null;
        public static Singleton getInstance4() {
      
            if (singleton2 == null){
                synchronized (Singleton.class){
                    if (singleton2 ==null){
                        singleton2 = new Singleton();
                    }
                }
            }
            return singleton2;
        }
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 修改了问题 8月9日
  • 创建了问题 8月9日

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 请求分析基于spring boot+vue的前后端分离的项目
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?