黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
吕振
时间:
2013-3-7 00:20
标题:
多线程问题
下面的代码是创建一个多线程的例子,启动程序在for循环中动态创建多条线程可是为啥没有创建成功呢??只显示一个线程在运行showNum方法....
private void button1_Click(object sender, EventArgs e)
{
createThread();
}
void createThread()
{
for (int i = 0; i < 30; i++)
{
Thread th = new Thread(new ThreadStart(showNum));
th.IsBackground = true;
th.Start();
//label1.Text = "启动了" + i + "个线程对象!";
}
}
void showNum()
{
DateTime start = DateTime.Now;
for (int i = 0; i < 9999; i++)
{
textBox1.Text = i.ToString();
Thread.Sleep(100);
}
DateTime end = DateTime.Now;
TimeSpan span = end - start;
MessageBox.Show(span.Seconds.ToString());
}
作者:
康晓璞
时间:
2013-3-7 11:28
标题:
RE: 多线程问题
将ShowNum的方法修改一下,这样可以看到正在运行的线程的唯一标示,再将它正在执行的 i 打印出来,就可以看到启动了多少了线程,每个线程运行到哪里了。
void createThread()
{
//启动几个线程就可以看到结果了,不需要那么多
for (int i = 0; i < 5; i++)
{
Thread th = new Thread(new ThreadStart(showNum));
th.IsBackground = true;
th.Name = "线程"+i;
th.Start();
}
}
void showNum()
{
for (int i = 1; i <= 5;i++ )
{
//ManagedThreadId:获取当前托管线程的唯一标识符
Console.WriteLine("当前的线程的ManagedThreadId:{0},执行到{1}次", Thread.CurrentThread.ManagedThreadId, i);
Thread.Sleep(100);
}
}
结果:
当前的线程的ManagedThreadId:10,执行到1次
当前的线程的ManagedThreadId:11,执行到1次
当前的线程的ManagedThreadId:12,执行到1次
当前的线程的ManagedThreadId:14,执行到1次
当前的线程的ManagedThreadId:13,执行到1次
当前的线程的ManagedThreadId:10,执行到2次
当前的线程的ManagedThreadId:11,执行到2次
当前的线程的ManagedThreadId:12,执行到2次
当前的线程的ManagedThreadId:13,执行到2次
当前的线程的ManagedThreadId:14,执行到2次
当前的线程的ManagedThreadId:11,执行到3次
当前的线程的ManagedThreadId:10,执行到3次
当前的线程的ManagedThreadId:12,执行到3次
当前的线程的ManagedThreadId:14,执行到3次
当前的线程的ManagedThreadId:13,执行到3次
当前的线程的ManagedThreadId:11,执行到4次
当前的线程的ManagedThreadId:10,执行到4次
当前的线程的ManagedThreadId:12,执行到4次
当前的线程的ManagedThreadId:13,执行到4次
当前的线程的ManagedThreadId:14,执行到4次
当前的线程的ManagedThreadId:10,执行到5次
当前的线程的ManagedThreadId:11,执行到5次
当前的线程的ManagedThreadId:12,执行到5次
线程 '线程1' (0x53c) 已退出,返回值为 0 (0x0)。
线程 '线程0' (0x14d8) 已退出,返回值为 0 (0x0)。
线程 '线程2' (0x15ac) 已退出,返回值为 0 (0x0)。
线程 '线程4' (0x131c) 已退出,返回值为 0 (0x0)。
线程 '线程3' (0x15a8) 已退出,返回值为 0 (0x0)。
当前的线程的ManagedThreadId:13,执行到5次
当前的线程的ManagedThreadId:14,执行到5次
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2