zoukankan      html  css  js  c++  java
  • 线程基本用法


    一、不带参数的

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

    namespace AAAAAA
    {
        
    class AAA
        
    {
            
    public static void Main()
            
    {
                Thread t 
    = new Thread(new ThreadStart(A));
                t.Start();

                Console.Read();
            }


            
    private static void A()
            
    {
                Console.WriteLine(
    "Method A!");
            }

        }

    }

     

          结果显示Method A!

    二、带一个参数的

         由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。

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

    namespace AAAAAA
    {
        
    class AAA
        
    {
            
    public static void Main()
            
    {         
                Thread t 
    = new Thread(new ParameterizedThreadStart(B));
                t.Start(
    "B");

                Console.Read();
            }


            
    private static void B(object obj)
            
    {
                Console.WriteLine(
    "Method {0}!",obj.ToString ());

            }

        }

    }

     

     结果显示Method B!

    三、带多个参数的

         由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。

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

    namespace AAAAAA
    {
        
    class AAA
        
    {
            
    public static void Main()
            
    {
                My m 
    = new My();
                m.x 
    = 2;
                m.y 
    = 3;

                Thread t 
    = new Thread(new ThreadStart(m.C));
                t.Start();

                Console.Read();
            }

        }


        
    class My
        
    {
            
    public int x, y;

            
    public void C()
            
    {
                Console.WriteLine(
    "x={0},y={1}"this.x, this.y);
            }

        }

    }

     

         结果显示x=2,y=3

    四、利用结构体给参数传值。

    定义公用的public struct,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。

    //结构体
      struct RowCol
        
    {
            
    public int row;
            
    public int col;
        }
    ;

    //定义方法
     public void Output(Object rc)
            
    {
                RowCol rowCol 
    = (RowCol)rc;
                
    for (int i = 0; i < rowCol.row; i++)
                
    {
                    
    for (int j = 0; j < rowCol.col; j++)
                        Console.Write(
    "{0} ", _char);
                    Console.Write(
    "\n");
                }

            }
  • 相关阅读:
    vector详解
    浅谈 莫斯电码&栅栏密码
    牛牛的BRD迷宫2 构造+思维
    Codeforces Round #409 C. Voltage Keepsake(二分+思维)
    hdu 2609 How many(最小表示法)
    hdu 4513(Manacher)
    codeforces 486 E. LIS of Sequence(dp)
    codeforces 486 D. Valid Sets(树形dp)
    hdu3746(kmp最小循环节)
    poj 2406 Power Strings(kmp next的应用)
  • 原文地址:https://www.cnblogs.com/dashi/p/4034742.html
Copyright © 2011-2022 走看看