创建线程

Thread :所执行的方法不能有参数。

class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程开始....");
Thread t = new Thread( print_1);
t.Start(); print_2();
Console.ReadLine(); } static void print_1()
{
Console.WriteLine("线程开始...");
string[] a = {"a","b","c","d","e","f","g"}; for (int i = ; i < ; i++)
{ Console.WriteLine(a[i]);
}
} static void print_2()
{
Console.WriteLine("主线程调用方法...");
for (int i = ; i < ; i++)
{
Console.WriteLine(i);
}
}
}

ParameterizedThreadStart:可以接受一个输入参数

 static void Main(string[] args)
{
Thread ts = new Thread(new ParameterizedThreadStart(print_3));
ts.Start("");
Console.ReadLine();
} static void print_3(object a)
{
Console.WriteLine($"输出{a}");
}

暂停线程

使线程暂停一段时间而不消耗操作系统资源,程序输出之前,将休眠5秒钟,它会尽可能的少占用CPU时间。

 static void Main(string[] args)
{
Console.WriteLine("主线程开始....");
Thread ts = new Thread(new ParameterizedThreadStart(print_3));
ts.Start(""); Console.ReadLine();
} static void print_3(object a)
{
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine($"输出{a}");
}

等待线程

让程序等待线程中的计算完成,并使用该线程的结果

        static void Main(string[] args)
{
Console.WriteLine("主线程开始....");
Thread ts = new Thread(new ParameterizedThreadStart(print_3));
ts.Start("");
ts.Join();
Console.WriteLine("主线程继续运行....");
Console.ReadLine();
}

程序运行时,启动了一个耗时的线程。正常情况下,会先打印出  "主线程继续运行....",然后在输出线程中的文字,但我们在程序中调用了ts.Join()方法,该方法允许我们主线程等待线程ts运行完时,主程序再继续运行。借助这个方法可以实现两个线程同步执行步骤,第一个线程会等待另一个线程的结果在继续执行,这时候,第一个线程等待时处于阻塞状态。

线程状态

ts.ThreadState.ToString()

Thread.CurrentThread.ThreadState.ToString()

ps:始终可以通过Thread.CurrentThread静态属性获得当前Thread对象

向线程传递参数

两种:

var t1 = new Thread(TestCounter),其中TestCounter方法必须是obejct类型的单个参数

var t2 =new Thread(()=>TestCounter2(12)),使用lambda表达式

最新文章

  1. 使用DeviceOne实现微信小程序功能
  2. SQL Server 利用批量(batchsize)提交加快数据生成/导入
  3. maven错误:Project configuration is not up-to-date with pom.xml
  4. Lintcode: Topological Sorting
  5. django templates学习使用记录
  6. 初识VBS
  7. ViewSwitcher使用范例
  8. mysqlsla 分析mysql慢查询日志
  9. [OJ] Find Minimum in Rotated Sorted Array
  10. JQuery操作select checkbox radio总结
  11. Pycharm中如何加载多个项目?
  12. 安装php扩展phpredis
  13. (十)弹出框Alert与ActionSheet
  14. python数据结构与算法之单链表
  15. UDP可靠传输那些事
  16. Android开发中常见的设计模式 MD
  17. drf8 解析器
  18. Django关于设置自定义404和安装debug-toolbar的笔记
  19. nginx重新编译添加ssl模块
  20. java设计模式-----24、访问者模式

热门文章

  1. Solr6.5配置中文分词器
  2. u盘安装原版win10系统1703更新
  3. 让这三个月来的更猛烈些吧,前端react同构项目
  4. 利用GeoIP数据库及API进行地理定位查询 Java
  5. Python 继承和组合 接口
  6. Java字符串操作
  7. 远景面试算法题——FolderSize
  8. JavaScript入门(一)
  9. MATLAB中绘制图形的时候,坐标和标题倒置
  10. Publish Web Site To IIS From VS