线程Thread,有参数和参数

一、不带参数的

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!");
  }
  }
}

二、带一个参数的

由于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 ());  

  }
  }
}

三、带多个参数的  
  由于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);
  }
  }
}
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);
  }
  }
}

四、利用结构体给参数传值。  
定义公用的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");
  }
  }
时间: 2025-01-02 11:01:31

线程Thread,有参数和参数的相关文章

线程池ThreadPoolExecutor、Executors参数详解与源代码分析

欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. ThreadPoolExecutor数据成员 Private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING,0)); ctl主要用于存储线程池的工作状态以及池中正在运行的线程数.显然要在一个整型变量存储两个数据,只能将其一分为二.其中高3bit用于存储线程池的状态,低位的29bit用于存储正在运行的线程数. 线

Lua 学习笔记(九)协同程序(线程thread)

协同程序与线程thread差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和命令指针,同时又与其他协同程序共享全局变量和其他大部分东西.从概念上讲线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行.也就是说多个协同程序在任意时刻只能运行一个协同程序,只有当正在运行的协同程序显式的要求挂起时,它的执行才会暂停. 一.协同程序coroutine Lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中. 1.coro

Java线程Thread及其常用方法

Java SE7 API - Thread: http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#yield%28%29 一.线程的简介 当JVM启动的时候, 通常会有一个独立的非守护线程(也就是类中的main方法所在的线程).JVM会继续运行,除非发生以下情况: Runtime类的exit()方法被调用,并且安全管理者允许退出发生. 所有非守护线程都已经死了,不管是从run方法中返回的还是因为run方法中抛出了异常. 注

x264中重要结构体参数解释,参数设置,函数说明 &lt;转&gt;

x264中重要结构体参数解释http://www.usr.cc/thread-51995-1-3.htmlx264参数设置http://www.usr.cc/thread-51996-1-3.html x264中重要结构体参数解释typedef struct x264_param_t{/* CPU 标志位 */unsigned int cpu;int         i_threads;       /* 并行编码多帧 */int         b_deterministic; /*是否允许非

可变参数:参数可变

可变参数:参数可变. 格式:方法名(参数类型… 参数名) 当使用可变参数定义函数时,函数在调用时,可以一次传入该类型的多个实际参数. 可变参数的定义会在执行时将这些实际参数组织成数组,可变参数的参数名就是数组名. 可变参数与数组类型不能重载,因为二者本质上是一样的 可变参数必须放在最后

C++跨平台技术 - 线程Thread

跨平台是什么意思呢?先了解一下平台的概念以及平台的差异.我们知道一个VC编译出来的*.exe是不能在Linux运行的,不能运行的原因可以概括为以下几个方面: 1. 文件的结构与格式 可执行程序是按定义好的格式来组织的, Microsoft 他 GNU对程序文件的定义是不一样的,如GNU使用 ELF格式定义.也就是说,当操作系统(Windows/Linux)试图把一个程序文件加载到内存里准备运行的时候,它可能会发现这个文件格式不对. 2. 依赖库 程序的最基本的运行库是C runtime,比如你调

C# 默认参数/可选参数需要注意

在使用C#的默认参数/可选参数的时候,需要注意,参数的默认值是在编译的时候,自动加入调用方的. 如我有这样一个方法: 1 public class Name 2 { 3 public void Test(Boolean isPass, String name = "") 4 { 5 if (String.IsNullOrWhiteSpace(name)) 6 Console.WriteLine("name is empty."); 7 else 8 Console.

loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 将字符串保存为参数 lr_save_string("string you want to save", "arg_name"); 举例:用参数来替换需要打开的url链接 Action2() { lr_save_string("http://172.25.75

Python3基础 函数 收集参数+普通参数 的示例

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: # 收集参数 定制参数 定制参数 def MyFun(* paramters, name, key) : print('收集参数的长度:',len(paramters)) print(paramters[1]) print(name) print(key) #如何调用呢? #定

C#方法参数--值参数,引用参数,输出参数

值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够计算成相应数据类型的表达式. 在把变量用作实参之前,变量必须被赋值(除非是输出参数,这个稍后介绍),对于引用类型,变量可以设置成实际引用或者Null. 引用参数: 使用引用参数时,必须在方法的申明和调用中都使用关键字ref修饰符. 实参必须是变量,在用作实参前必须被赋值.如果是引用类型的变量,可以赋