zoukankan      html  css  js  c++  java
  • 带参数的多线程如何去写?

    带参数的多线程的方式

    #region 执行带一个参数的多线程
    Thread mythread = new Thread(new ParameterizedThreadStart(Calculate));
    mythread.IsBackground = true;
    mythread.Start(500);
    #endregion

    private void Calculate(object Max) //带一个参数的委托函数
    {
    int max = (int)Max;
    Stopwatch stopwatch = Stopwatch.StartNew();
    for (int i = 0; i < max; i++)
    {
    Thread.Sleep(5);
    }
    stopwatch.Stop();
    long lSearchTime = stopwatch.ElapsedMilliseconds;
    MessageBox.Show(lSearchTime.ToString() + "毫秒");
    }

    方式一: 定义一个类,将要传的参数设置为类的属性,然后将参数值赋值给类的属性,将类作为一个参数进行传达,以下代码通过两个参数示例,多个参数一样,代码如下

    class MyClass
    {
    public int Max { get; set; }
    public int Min { get; set; }
    }

    #region 第一种方式:执行带多个参数的多线程
    MyClass model = new MyClass();
    model.Max = 500;
    model.Min = 0;
    Thread mythread1 = new Thread(new ParameterizedThreadStart(CalculateTwo));
    mythread1.IsBackground = true;
    mythread1.Start(model);
    #endregion

    private void CalculateTwo(object Myclass) //带多个参数的委托函数
    {
         MyClass model = (MyClass)Myclass;
         Stopwatch stopwatch = Stopwatch.StartNew();
         for (int i = model.Min; i < model.Max; i++)
    {
    Thread.Sleep(5);
    }
         stopwatch.Stop();
         long lSearchTime = stopwatch.ElapsedMilliseconds;
         MessageBox.Show(lSearchTime.ToString() + "毫秒");
    }

    方式二:lambda表达式的方式,简单方便,代码如下:
    #region 第二种方式:执行带多个参数的多线程
         Thread mythread2 = new Thread(() => CalculateThree(500, 0));
         mythread2.IsBackground = true;
    //設置為後臺線程,程式關閉后進程也關閉,如果不設置true,則程式關閉,此線程還在內存,不會關閉
         mythread2.Start();
    #endregion
    private void CalculateThree(int Max,int Min) //带多个参数的委托函数
    {
         Stopwatch stopwatch = Stopwatch.StartNew();
         for (int i = Min; i < Max; i++)
         {
               Thread.Sleep(5);
         }
         stopwatch.Stop();
         long lSearchTime = stopwatch.ElapsedMilliseconds;
         MessageBox.Show(lSearchTime.ToString() + "毫秒");
    }

  • 相关阅读:
    Docker中查看Mysql数据库中的各环境参数
    Hbase shell 输入无法使用退格键删除解决办法
    HBase启动时报错:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1.8.0_152/bin/java
    SSH无密码验证
    详解分布式应用程序协调服务Zookeeper
    zookeeper的原理及使用
    Hadoop、Yarn和vcpu资源的配置
    一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!
    基于Docker一键部署大规模Hadoop集群及设计思路
    PHP ServerPush (推送) 技术的探讨【转】
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/7206511.html
Copyright © 2011-2022 走看看