小工具      在线工具  汉语词典  css  js  c++  java

ReentrantLock 实际测试

Java 额外说明

收录于:42天前

import java.util.concurrent.locks.ReentrantLock;

/**
 * ReentrantLock 测试用代码
 *
 * @author TF12778 2019/10/21 15:30
 */
public class ReentrantLockTest extends Thread  {

    private static int count =  100000;// 10000000;

    public static ReentrantLock lock = new ReentrantLock();
    public static int i = 0;

    public ReentrantLockTest(String name) {
        super.setName(name);
    }

    /**
     * 1。 当使用ReentrantLock锁的时候,不论任何时候,输出结果都是200000
     * 2。 当不使用ReentrantLock锁的时候,输出结果可能不等于200000,刚刚测试了一把是199988
     */

    @Override
    public void run() {
        for (int j = 0; j < count; j++) {
            lock.lock();
            try {
                System.out.println(this.getName() + " " + i);
                i++;
            } finally {
                lock.unlock();
            }
        }
    }

    /**
     * @param args
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {
        ReentrantLockTest test1 = new ReentrantLockTest("thread1");
        ReentrantLockTest test2 = new ReentrantLockTest("thread2");

        test1.start();
        test2.start();
        test1.join();  // 先执行子线程,再执行主线程
        test2.join();  // 先执行子线程,再执行主线程
        System.out.println("最后的执行结果:" + i); // 执行主线程
    }
}

. . .

相关推荐

额外说明

Spring MVC请求流程分析

Spring MVC中的 MVC 即模型-视图-控制器,该框架围绕一个 DispatcherServlet 设计,DispatcherServlet 会把请求分发给各个处理器,并支持可配置的处理器映射和视图渲染等功能。Spring MVC 的工作流程如图

额外说明

多线程面试相关的一些问题

面试题 1. 常见的锁策略 相关的面试题 2. CAS 相关的面试题 3. Synchronized 原理 相关的面试题 4. Callable 接口 相关的面试题 1. 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况,每次去拿数据的时

额外说明

大喜国庆,聊聊我正式进入职场的这三个月...

个人简介 -个人主页: 前端杂货铺 -‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 -个人状态: 研发工程师,现效力于中国工业软件事业 -人生格言: 积跬步至千里,积小流成江海 -推荐学习:-前端面试宝典 -Vue2 -Vue3-Java基础 -Vu

额外说明

couse2610_lab6-Linux进程管理

1.实验介绍 1.1 实验内容 通过本实验我们将掌握一些 Linux 所提供的工具来进行进程的查看与控制; 掌握这些工具让我们能在某些进程出现异常的时候及时查看相关的指标,从而解决问题。 1.2 实验知识点 查看进程的运行状态 进程的结束控制 进程的执行

额外说明

APP自动化你需要知道的一

appium环境安装与架构 目前mobile自动化的方案 IOS Android calabash-ios/Frank/UIAutomation/ios-driver/KeepItFunctional… calabash-android/MonkeyTa

额外说明

问题随记 —— Microsoft Visual C++ 14.0 or greater is required

文章目录 问题描述 解决方法 问题描述 Python 安装某些包时出现 Microsoft Visual C++ 14.0 or greater is required 解决方法 安装 Visual Studio,勾选 使用 C++ 的桌面开发,再点击

额外说明

13.1.2 对CIFAR-10数据集使用图像增广来训练ResNet

%matplotlib inline import torch import torchvision from torch import nn from d2l import torch as d2l import time ''' 使用CIFAR-1

额外说明

Echarts图表x轴y轴刻度值过长时显示不全(超过一千显示...k)

        在使用 Echarts 图表的过程中,有时候数值会很大导致该轴的刻度显示不全,如图:         这个时候就需要将该轴的刻度值除以 1000 或 10000,再加一个单位来缩短它的长度;         Echarts官网中为我们提供

额外说明

抖音直播带课实训营:找对方法少走弯路,一边学习一边实操

标题:全面实用的抖音直播训练营:少走弯路,学起来事半功倍 文本: 近年来,随着直播行业的快速崛起,抖音直播作为领先的短视频平台,也逐渐开始涉足直播教学领域。要想在这个竞争激烈的市场中取得成功,我们不仅需要学习相关知识,还需要进行全面的实践操作。本文将介绍

ads via 小工具