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);

    }
    }
    }

  • 相关阅读:
    省常中模拟 Test4
    省常中模拟 Test3 Day1
    省常中模拟 Test3 Day2
    省常中模拟 Test1 Day1
    树型动态规划练习总结
    noip2010提高组题解
    noip2003提高组题解
    noip2009提高组题解
    noip2004提高组题解
    noip2002提高组题解
  • 原文地址:https://www.cnblogs.com/1314wamm/p/6128214.html
Copyright © 2011-2022 走看看