zoukankan      html  css  js  c++  java
  • 多线程安全的解决方法

    11 public class ServletDemo3 extends HttpServlet {
    12 
    13     int i=1;
    14     public void doGet(HttpServletRequest request, HttpServletResponse response)
    15             throws ServletException, IOException {
    16         /**
    17          * 加了synchronized后,并发访问i时就不存在线程安全问题了,
    18          * 为什么加了synchronized后就没有线程安全问题了呢?
    19          * 假如现在有一个线程访问Servlet对象,那么它就先拿到了Servlet对象的那把锁
    20          * 等到它执行完之后才会把锁还给Servlet对象,由于是它先拿到了Servlet对象的那把锁,
    21          * 所以当有别的线程来访问这个Servlet对象时,由于锁已经被之前的线程拿走了,后面的线程只能排队等候了
    22          * 
    23          */
    24         synchronized (this) {//在java中,每一个对象都有一把锁,这里的this指的就是Servlet对象
    25             i++;
    26             try {
    27                 Thread.sleep(1000*4);
    28             } catch (InterruptedException e) {
    29                 e.printStackTrace();
    30             }
    31             response.getWriter().write(i+"");
    32         }
    33         
    34     }
    35 
    36     public void doPost(HttpServletRequest request, HttpServletResponse response)
    37             throws ServletException, IOException {
    38         doGet(request, response);
    39     }
    40 
    41 }
  • 相关阅读:
    sql server 行转列
    java 加密解密WORD文档
    数据库重新连接存储
    MSSQL 删除索引
    WORD添加批注(JAVA)
    JAVA添加WORD文档批注
    MYECLIPSE说明书
    K3二次开发后台表
    css css预处理器
    javascript 视频播放指定的时间段
  • 原文地址:https://www.cnblogs.com/loveMis/p/10410505.html
Copyright © 2011-2022 走看看