• 在项目中 将秒杀的时候锁定线程并将线程操作的ID写入txt文件中 (例子)


    锁定线程,进行单线程操作的时候,应使用以下操作方法锁定:
    private readonly static Object thisLock = new Object();
     lock (thisLock)
    {
    ...
    }
    //
    private void writeLog(Exception e)
            {
                FileStream fs = new FileStream("d:/ceshixiancheng.txt", FileMode.Append);
                
                //获得字节数组
                byte[] data = new UTF8Encoding().GetBytes(e.Message);
                //开始写入
                fs.Seek(0, SeekOrigin.End);
                fs.Write(data, 0, data.Length);
                var str = "
    ";
                byte[] data1 = new UTF8Encoding().GetBytes(str);
                fs.Write(data1, 0, data1.Length);
                //清空缓冲区、关闭流
                fs.Flush();
                fs.Close();
            }
    
    //使用时的调用:
      writeLog(new Exception("线程:" + Thread.CurrentThread.ManagedThreadId + "进来了!"));
    View Code

    以上为在做秒杀时 锁定线程,防止库存溢出的一个测试,测试是不是将线程锁定了,正常情况,线程锁定后,输出到txt文档的内容都是成对的,一进一出。如果不是则说明县城没有锁死.另外注意需要将txt文档的权限给了,否则会提示没有权限。

  • 相关阅读:
    ESlint中console.log报错问题
    for、forEach、for in、for of用法
    如何覆盖elementUI样式
    什么是闭包(closure),为什么要用它?
    写一个通用的事件侦听器函数
    javascripts 浅拷贝和深拷贝
    箭头函数
    用 async/await 来处理异步
    DOM事件类
    arguments 详解
  • 原文地址:https://www.cnblogs.com/WZH75171992/p/4962858.html
Copyright © 2020-2023  润新知