首先给出多线程的定义(百度给的定义): 在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是
首先给出多线程的定义(百度给的定义):
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。
多线程可以更加充分的利用CPU的资源,在相对较短的时间,完成大量的任务。
最近,因为项目中,要抓取网页的数据放在数据库中,大家都知道,网页上的一个节点下的链接已经很多了,如果是抓取整个页面的话,只有一个线程是远远不够的。因此,我学习了一点多线程的知识。
这是写的再基本不错的多线程了。
这个程序的意思是,首先捕获本机的线程的个数,然后开启一个新的线程,然后再次捕获线程的个数,与原先的线程数进行比较,看看是否加一。 就是这么简单。
程序开始:
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);//输入参数为空,其实类型可以不写,因为lambda表达式可以从上下文中读出参数的类型
//=>指向的是要执行的表达式或者语句块。
//lambda表达式是随着.net3.0出来的产品,和linq可以配合的很好。
Thread t1 = new Thread(() =>
{
Thread.Sleep(1000);
Thread t = Thread.CurrentThread;
Console.WriteLine("Name: " + t.Name);
Console.WriteLine("ManagedThreadId: " + t.ManagedThreadId);
Console.WriteLine("State: " + t.ThreadState);
Console.WriteLine("Priority: " + t.Priority);
Console.WriteLine("IsBackground: " + t.IsBackground);
Console.WriteLine("IsThreadPoolThread: " + t.IsThreadPoolThread);
})
{
Name = "Thread1",
Priority = ThreadPriority.Highest,
};
t1.Start();
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);
Console.ReadKey();
对了命名空间如下:
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; //这是多线程的类库
using System.Collections;
using System.Diagnostics; //这是进程类的类库