博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程不安全
阅读量:6119 次
发布时间:2019-06-21

本文共 607 字,大约阅读时间需要 2 分钟。

class ThreadUnsafe

{
static int _val1 = 1, _val2 = 1;
static void Go()
{
if (_val2 != 0) Console.WriteLine (_val1 / _val2);
_val2 = 0;
}
}///方法的定义和分配的内存地址和大小 都是固定的

这个类不是线程安全的,如果方法Go被两个线程同时 调用,如果第一个线程执行完

_val2 = 0;

而第2个线程执行到 Console.WriteLine (_val1 / _val2);这样就会出错();

class ThreadSafe

{
static readonly object _locker = new object();
static int _val1, _val2;
static void Go()
{
lock (_locker)
{
if (_val2 != 0) Console.WriteLine (_val1 / _val2);
_val2 = 0;
}
}
}

添加一个locker 就可以了,这样就可以保证只有一个线程 执行里面的语句,其他的线程等待第一个线程执行完,排队的线程按照先来先得获得方法的访问

转载于:https://www.cnblogs.com/gisbeginner/archive/2012/07/12/2588430.html

你可能感兴趣的文章
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
BZOJ 2190[SDOI2008]仪仗队
查看>>
图解SSH原理及两种登录方法
查看>>
[转载] 七龙珠第一部——第058话 魔境圣地
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
P127、面试题20:顺时针打印矩阵
查看>>
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
学习笔记之Data Visualization
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>