zoukankan      html  css  js  c++  java
  • 线程中锁方法和静态变量的锁

    1-----锁方法的使用:

     final ServletContext ctx = request.getServletContext();这个地方变量要定义成常量;

    new Thread(){//写成了内部类
    public void run() {
    AddCount.add(ctx);
    };
    }.start();

    class AddCount{
    //用类模板当锁
    public synchronized static void add(ServletContext ctx){------- synchronized 这里是锁住了方法----锁是方法的类
    Integer count = (Integer) ctx.getAttribute("count");
    count++;
    ctx.setAttribute("count", count);
    }
    }

    2-----用静态变量当锁

    ServletContext ctx=request.getServletContext();这里可以不用定义成常量
    new MyThread(ctx).start();

    --写到外部

    class MyThread extends Thread{

    private static String C = "asd";//这里定义一个静态的变量,使得共用了同一把锁
    private ServletContext ctx=null;
    public MyThread(ServletContext ctx) {
    this.ctx=ctx;
    }
    @Override
    public void run() {
    System.out.println("线程在跑跑跑......");

    synchronized (C) {这里是采用静态变量来进行加锁
    Integer count = (Integer) ctx.getAttribute("count");
    count++;
    ctx.setAttribute("count", count);

    }
    }
    }

  • 相关阅读:
    清理yum源
    XZ压缩
    Linux命令之dot
    calltree查看工程代码中的函数调用关系
    valgrind 打印程序调用树+进行多线程性能分析
    LINUX 性能 测试 优化工具
    TCP/IP(84) 详解
    perf---LINUX内核研究
    廖雪锋笔记3:类型转换
    廖雪锋笔记2:list,tuble
  • 原文地址:https://www.cnblogs.com/1314wamm/p/6128214.html
Copyright © 2011-2022 走看看