黑马程序员技术交流社区
标题:
黑马程序员-线程的内部结构模拟和线程执行带参数的方法
[打印本页]
作者:
安玉波
时间:
2013-3-7 18:13
标题:
黑马程序员-线程的内部结构模拟和线程执行带参数的方法
一、多线程线程的内部结构的模拟
在这里主要模拟了线程
执行不带参数的方法和
执行不带参数的方法两种。
模拟代码如下:
//-------------执行不带参数的方法-----------
ThreadStart threads;
public MyThread(ThreadStart ts)//要求 用户在new的时候传入方法委托
{
this.threads = ts;//将委托 赋给全局变量
}
public void Start()
{
if (threads != null)
threads();//调用 委托,执行委托里的方法
else
pts(null);
}
//-------------执行带参数的方法-----------
ParameterizedThreadStart pts;
public MyThread(ParameterizedThreadStart pts)//要求 用户在new的时候传入方法委托
{
this.pts = pts;//将委托 赋给全局变量
}
public void Start(object o)
{
pts(o);//调用 委托,执行委托里的方法
}
二、多线程执行带参数的方法
在线程执行带参数的方法是要判断参数是否为null。
代码如下:
void SaiNi(object name)
{
if (name != null)//判断 是否传入参数
MessageBox.Show("您好--" + name);
else
MessageBox.Show("null");
}
private void btnThreadParatton_Click(object sender, EventArgs e)
{
//创建线程
Thread threadFrist = new Thread(ChangTxt);
threadFrist.IsBackground = true;//把线程设置为后台线程
threadFrist.Start(txtNameN.Text.ToString().Trim());//开启线程 传入参数
}
三、多线程执行带多个参数的方法
当线程执行带多个参数的方法时,在这里传入的是一个泛型集合。
代码如下:
//----------------------执行带多个参数的方法---------
void SaiNi(object name)
{
List<string> lst = name as List<string>;
if (lst != null)//判断 是否传入参数
{
foreach (string s in lst)
{
MessageBox.Show("您好---"+s);
}
}
else
MessageBox.Show("null");
}
private void btnThreadParatton1_Click(object sender, EventArgs e)
{
//创建线程
Thread threadFrist = new Thread(ChangTxt);
threadFrist.IsBackground = true;//把线程设置为后台线程
threadFrist.Start(new List<string> { "赵雅芝","张国荣","张曼玉"});//开启线程 传入参数
}
作者:
许庭洲
时间:
2013-3-7 20:37
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2