多线程能够让cpu “同时”运用多个程序 能够让cpu的资源最大化的被利用 多线程 并不是真正的能够同时运行多个程序 以前我就是这样错误的理解,实际上cpu还是只能执行一个程序 使用多线程只不过是让cpu 在多个线程间来回切换 只不过切换过程非常快 看起来像是几个程序同时运行
单线程的缺点
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace 多线程
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void countTimes()
{
DateTime begin = DateTime.Now;
for (int i = 0; i <=1000000000; i++)
{
}
TimeSpan ts = begin.Subtract(DateTime.Now);
MessageBox.Show("执行完毕!!!" + ts.TotalMilliseconds);
}
/// <summary>
/// 单线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtsinglethread_Click(object sender, EventArgs e)
{
countTimes();
}
/// <summary>
/// 多线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtmulthread_Click(object sender, EventArgs e)
{
Thread thread = new Thread(countTimes);
thread.Start();
thread.IsBackground = true;
}
}
}
执行这段程序 单线程会先把循环执行完 再去执行其他的程序 这样UI线程就会被占用,这样像拖动窗口之类的动作就不能执行了,
而多线程把循环放在另一个线程中 这样UI线程仍然可用。
IsBackground 属性可以设定是否为后台线程 一个后台线程会在所有线程结束后自动结束