• 线程中锁方法和静态变量的锁


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

    }
    }
    }

  • 相关阅读:
    hdu 5961 传递(暴力搜索)
    hdu 3577 Fast Arrangement(线段树区间修改,求区间最小值)
    hdu 5898 odd-even number(数位dp)
    Python-编码
    Golang-教程
    Python-待
    Python_每日习题_0006_斐波那契数列
    计算机网络
    Python_老男孩练习题1
    Python_内置函数2_44
  • 原文地址:https://www.cnblogs.com/1314wamm/p/6128214.html
Copyright © 2020-2023  润新知