wild84
wild84
采纳率91.6%
2017-12-07 03:24 阅读 4.7k
已采纳

spring的controller和service是否线程安全?

先上代码

 public String deleteNews(Integer id){
        String ret;
        logger.debug("mydebug news id:"+id);
        News news=newsService.selectNewsById(id);
        Types types=news.getTypesEnti();
        if (types.getOnechildOnly()==1){
            ret=ReturnFormat.retParam(2,null);
            return ret;
        }else{
            int no=newsService.deleteNewsById(id);
            if (no>0){
                ret= ReturnFormat.retParam(0,null);
            }else{
                ret=ReturnFormat.retParam(1,null);
            }
            return ret;
        }
    }

我先传一个types.getOnechildOnly()==1的news ID,这时是正常的
然后我再传一个types.getOnechildOnly()!=1的ID,这个时候也是正常的,
但是当我再重复1和2步骤时,newsService.selectNewsById(id);有时候会出现
空值情况.我打印了下,好像他删除的还是前一个已经删除的id,这种情况怎么处理?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    qq_39440156 一页书_ 2017-12-07 03:26

    线程安不安全取决于你怎么用,反正记住一点,共享资源不要定义全局的变量,只定义常量和注入的bean,这样基本不会有线程安全问题的出现。

    点赞 1 评论 复制链接分享
  • u013672776 u013672776 2018-02-26 07:40

    通常都是 调用 controller 和service里面的方法, 方法是在虚拟机栈中执行的 每个线程都有各自的栈空间, 所以没有线程安全问题,
    但是如果在 controller类中 定义了 属性, 并且在方法中使用, 这个时候就存在线程安全问题了.因为多个线程共享 controller的对象实例的属性.

    点赞 评论 复制链接分享

相关推荐