主程序Program.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace MultiThreadedPrinting
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("********Synchronizing Threads*************");
            Printer p = new Printer();
            Thread[] threads = new Thread[10];
            for (int i = 0; i < 10; i++)
            {
                threads[i] = new Thread(new ThreadStart(p.PrintNumber));
                threads[i].Name = string.Format("Worker thread #{0}", i);
            }

foreach (Thread t in threads)
                t.Start();
            Console.ReadLine();
        }
    }
}

类Printer.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace MultiThreadedPrinting
{
    public class Printer
    {
        public void PrintNumber()
        {
                 Console.WriteLine("-> {0} is executing PrintNumbers()", Thread.CurrentThread.Name);
                for (int i = 0; i < 10; i++)
                {
                    Random r = new Random();
                    Thread.Sleep(1000 * r.Next(5));
                    Console.Write(i + ",");
                }
                Console.WriteLine();

}

}
}

运行程序你会发现出现意想不到的结果,一些线程可能被挂起,出现了并发的问题。

为了解决并发问题C#提供了特别的关键字:Lock

PrintNumber()
中修改为

lock (this)
            {
                Console.WriteLine("-> {0} is executing PrintNumbers()", Thread.CurrentThread.Name);
                for (int i = 0; i < 10; i++)
                {
                    Random r = new Random();
                    Thread.Sleep(1000 * r.Next(5));
                    Console.Write(i + ",");
                }
                Console.WriteLine();
            }

转载于:https://www.cnblogs.com/aaa6818162/archive/2009/08/20/1550464.html

C#多线程操作----处理并发的问题,Lock关键字相关推荐

  1. 更高效地提高redis client多线程操作的并发吞吐设计

    Redis是一个非常高效的基于内存的NOSQL数据库,它提供非常高效的数据读写效能.在实际应用中往往是带宽和CLIENT库读写损耗过高导致无法更好地发挥出Redis更出色的能力.下面结合一些redis ...

  2. 高效Redis Client多线程操作的并发吞吐设计

    Redis是一个非常高效的基于内存的NOSQL数据库,它提供非常高效的数据读写效能.在实际应用中往往是带宽和CLIENT库读写损耗过高导致无法更好地发挥出Redis更出色的能力.下面结合一些redis ...

  3. Java多线程、高并发秒杀时MySQL出现死锁原因(Deadlock found when trying to get lock)及对应解决方案

    1. 死锁背景 1.1 在做高并发秒杀中创建订单.减库存步骤时出现异常:MySQLTransactionRollbackException: Deadlock found when trying to ...

  4. 多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore

    "线程同步"的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行"线程同步(t ...

  5. python paramiko并发_使用Python paramiko模块利用多线程实现ssh并发执行操作

    1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以 ...

  6. 多线程面试题_100多线程和Java并发面试问答–最终清单(PDF下载)

    多线程面试题 在这篇文章中,我们将提供有关多线程和Java并发面试问答的综合文章. 编者注:并发始终是开发人员的挑战,编写并发程序可能非常困难. 引入并发时,有很多事情可能会崩溃,并且系统的复杂性会大 ...

  7. 一篇博客带你轻松应对java面试中的多线程与高并发

    1. Java线程的创建方式 (1)继承thread类 thread类本质是实现了runnable接口的一个实例,代表线程的一个实例.启动线程的方式start方法.start是一个本地方法,执行后,执 ...

  8. Java多线程:线程间通信之Lock

    Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...

  9. java多线程实例_多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌...

    前言 当你开始开始去跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是凉凉:现如今市场,多线程.高并发编程.分布式.负载均衡.集群等可以说是现在 ...

最新文章

  1. 1024 | 不加班,带你们一起薅当当的羊毛!
  2. SAP WM初阶事务代码LX29 - List of Fixed Storage Bins
  3. Ext.data.GroupingStore
  4. 栏目信息开源 免费 java CMS - FreeCMS1.3 标签 infoList
  5. Android踩坑日记:自定义水平和圆形ProgressBar样式
  6. ThreadLocal的第二种用法 part1
  7. Linux高性能服务器编程
  8. android novate乱码,Novate 一款Android RxStyle的网络框架
  9. 基于jmx监控kafka_0542-6.1.0-非安全环境下Kafka管理工具Kafka Eagle安装使用
  10. JS正则验证邮箱的格式
  11. 黑苹果hidp显示不清楚_魔兽世界9.0:盟约指挥台不显示胜率?搞清楚机制,轻松收菜!...
  12. python入门_老男孩_数据类型简介_int/bool/str转换_字符串索引和切片_字符串操作_day3...
  13. Java类与对象——几个课堂例子的总结及作业
  14. Google Chrome浏览器模拟设置不同分辨率
  15. springboot悠悠转二手网站毕业设计源码181134
  16. 使用Scrapy框架爬取网页并保存到Mysql
  17. 如何打造一个自动化的前端项目
  18. 国内外银行核心系统之间的差异
  19. 一个逻辑问题的分析:“天堂与地狱的守卫”
  20. 解决you-get下载视频速度慢和下载MP4文件问题

热门文章

  1. 前端—每天5道面试题(7)
  2. 电脑自动关机设置方法
  3. erp系统是什么转型
  4. 为什么很多公司只给博士发安家费,却不给研究生和本科生发?
  5. 22年前,100万买入谷歌原始股,奥尼尔的股份如今市值多少?
  6. 后背疼的厉害有可能是哪些原因导致的?该怎么办?
  7. 大家马致远是哪个朝代的,马致远作品赏析
  8. 你关注什么,输出什么
  9. 知识与智慧的区别是什么?
  10. 多线程reactor模型