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

    }
    }
    }

  • 相关阅读:
    Python连接MySQL数据库之pymysql模块使用
    线程
    进程
    网络编程
    面向对象进阶
    迭代器,生成器,装饰器
    函数的基础
    Andy's First Dictionary UVA
    Stripies POJ
    Soldier and Badges CodeForces
  • 原文地址:https://www.cnblogs.com/1314wamm/p/6128214.html
Copyright © 2011-2022 走看看