首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面试题:C#编码实现两个线程对数组变量分别加1减1,居然没有做出来

面试题:C#编码实现两个线程对数组变量分别加1减1,居然没有做出来

作者头像
郑子铭
发布2023-10-31 13:09:49
发布2023-10-31 13:09:49
1810
举报

面试题:

请编写一段程序,已知变量(int[] i=new int[]{0}),创建两个线程,其中一个线程每隔一秒种对i[0]进行加1,另外一个线程没间隔一秒对i[0]进行减1,对i[0]进行加减时需要考虑到线程安全。

解答:

首先编写编写两个线程,每个线程一个循环对变量数组加减操作,在计算的时候需要加锁。代码如下:

代码语言:javascript
复制
 private static object lockObj = new object();//定义锁
      private static object lockObj2 = new object();//定义锁
        static int[] i = new int[] { 0 };//数组
        public static void Main()
        {
        //开启两个线程
            Thread thread = new Thread(new ThreadStart(Threadaddition));
            thread.Start();
            Thread thread2 = new Thread(new ThreadStart(Threadsub));
            thread2.Start();

            Console.WriteLine(i[0]);
        }
        private static void Threadaddition()
        {
            try
            {
                while (true)
                {
                    lock(lockObj)//加锁
                    {
                    Thread.Sleep(1000);
                    i[0] = i[0] + 1;
                    }
                }
            }
            catch (Exception ee)
            {
            }
        }
        private static void Threadsub()
        {
            try
            {
                while (true)
                {
                    lock (lockObj2)//加锁
                    {
                        Thread.Sleep(1000);
                        i[0] = i[0] - 1;
                    }
                }
            }
            catch (Exception ee)
            {
            }
           
        }

还可以用信号量实现,大家可以尝试一下。

欢迎欢迎大家评论指正,或写出自己的答案。

推荐阅读:

一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel

推荐一个基于 .NET 开发的开源工作流项目

推荐一个使用 .NET 和 Angular 开发的在线任务管理工具

基于.NET的强大文件格式开源转换工具

字符串 --- 不可变性与驻留池

Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档