C# Lock锁(个人随记)
static int NoLockData = 0; public static void NoLockNormalTest(int threadIndex)
{ while (true)//这是脑残设计,while(true)
{
//lock (lockNormal)
{
NoLockData++;
Debug.Print("{0}无锁状态的+值{1}", threadIndex, NoLockData);
NoLockData--;
Debug.Print("{0}无锁状态的-值{1}", threadIndex, NoLockData);
}
Thread.Sleep(1);//让我们养成良好习惯,每一个while都要休息下
}
}
new Thread(() =>{ NoLockNormalTest(1); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(2); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(3); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(4); }) { IsBackground=true}.Start();
这个时候值是乱的
引入第一种锁lock
/// <summary>
/// 声明一个应用object变量,不能值变量,别问,问就是object变量,养成习惯,static 是因为我在控制台
/// </summary>
private static object lockNormal = new object();
public static void LockNormalTest(int threadIndex)
{
while (true)//这是脑残设计,while(true)
{
lock (lockNormal)
{
NoLockData++;
Debug.Print("{0}无锁状态的+值{1}", threadIndex, NoLockData);
NoLockData--;
Debug.Print("{0}无锁状态的-值{1}", threadIndex, NoLockData);
}
Thread.Sleep(1);//让我们养成良好习惯,每一个while都要休息下
}
}
这个时候值是稳定的大家都在无序被锁控制
很简单把,使用注意点,要锁的话必须同一个变量
{
//这里面处理事情
C# Lock锁(个人随记)的更多相关文章
- Lock锁的使用示例
Lock锁是java5用来代替synchronized的一种面向对象的锁的方案 public class LockDemo { /** * Lock是用来替换synchronized, 优点是Lock ...
- Android(java)学习笔记69:JDK5之后的Lock锁的概述和使用
1. Lock锁的概述: java.util.concurrent.locks,接口Lock 首先Lock是一个接口,Lock实现提供了比使用synchronized方法 和 同步代码块更为广泛的锁定 ...
- python多线程threading.Lock锁用法实例
本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...
- Lock锁_线程_线程域
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- (删)Java线程同步实现二:Lock锁和Condition
在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步.但在Java中还有一种方式可以实现线程同步,那就是Lock锁. 一.同步锁 ...
- 转: 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)
简单使用Lock锁 Java5中引入了新的锁机制--Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接 ...
- 使用Lock锁生产者消费者模式
package com.java.concurrent; import java.util.concurrent.locks.Condition; import java.util.concurren ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- java并发编程的艺术——第五章总结(Lock锁与队列同步器)
Lock锁 锁是用来控制多个线程访问共享资源的方式. 一般来说一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程访问共享资源,如读写锁). 在Lock接口出现前,java使用synchr ...
随机推荐
- 编辑距离12 · Edit Distance12
[抄题]: 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数. 你总共三种操作方法: 插入一个字符 删除一个字符 替换一个字符 [思维问题]: [一句话思路]: ...
- iOS 管理库 Carthage 安装以及使用
https://blog.csdn.net/Mazy_ma/article/details/70185547
- JavaScript跨域总结与解决办法(转)
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...
- 深入了解 php 底层机制 (-)洪定坤
- Linux 添加硬盘
一.简介 本文介绍为Linux 添加硬盘的基本方法,同时适用于为虚拟机添加硬盘的情况. 二.添加小于2T的硬盘 1)分区 fdisk /dev/hda 2)建立文件系统 3)设置开机自动挂载磁盘 ...
- Luogu 1070 道路游戏
看完题面想了一会发现只会写$n^3$,愣了一会才想出了单调队列优化的做法. 90分算法: 设$f_{i, j, k}$表示第$i$分钟在第$j$座城市已经走了$k$步的最大价值,转移显然,时间复杂度$ ...
- easyui datagrid 分页 客户分页
1.写好json 数据 { "total":21, ...
- css之颜色篇
app多采用浅灰#f5f5f5 白色一般用white,如果觉得白太直接了,可以加一点点灰,#fefefe, 这种情况下搭配#e4e4e4的浅灰边框最合适.
- Spark实践 -- 性能优化基础
性能调优相关的原理讲解.经验总结: 掌握一整套Spark企业级性能调优解决方案:而不只是简单的一些性能调优技巧. 针对写好的spark作业,实施一整套数据倾斜解决方案:实际经验中积累的数据倾斜现象的表 ...
- mysql 经典错误解决方案 :Incorrect string value 'xE6x95x85xE4xBAx8B...' for column
1.关闭当前服务器2.删除正在使用的数据库drop database 数据库名字;3.查看字符集, SHOW VARIABLES LIKE 'character_set_%'; 把所有latin1的都 ...