创建线程

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表达式

【C#多线程编程实战笔记】一、 线程基础的更多相关文章

  1. python 多线程编程之进程和线程基础概念

    多线程编程 在多线程(multithreaded,MT)出现之前,计算机程序的执行都是由单个步骤序列组成的,该序列组合在主机的CPU中按照同步顺序执行.无论是任务本身需要按照步骤顺序执行,还是整个过程 ...

  2. 【C#多线程编程实战笔记】二、 线程同步

    使用Mutex类-互斥锁 owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 name为定义的互斥锁名称,在整个操作系统只有一个命名未CSharpThreadingCookb ...

  3. C#多线程编程实战1.6线程优先级

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  4. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  5. 《Java多线程编程实战指南(核心篇)》阅读笔记

    <Java多线程编程实战指南(核心篇)>阅读笔记 */--> <Java多线程编程实战指南(核心篇)>阅读笔记 Table of Contents 1. 线程概念 1.1 ...

  6. Java多线程编程实战指南(核心篇)读书笔记(四)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  7. Java多线程编程实战指南(核心篇)读书笔记(三)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  8. Java多线程编程实战指南(核心篇)读书笔记(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76651408冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  9. Java多线程编程实战指南(核心篇)读书笔记(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

随机推荐

  1. Java 简单的 socket 编程入门实战

    这个是给女朋友写的:) 首先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端) 我们需要使用java来实现客户端与服务器的数据传输 先帖上代码 注意这里两张代码处于两个j ...

  2. java连接数据库

    package com.shsxt.jdbcs; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...

  3. python的__init__几种方法总结

    参考 __init__() 这个方法一般用于初始化一个类 但是 当实例化一个类的时候, __init__并不是第一个被调用的, 第一个被调用的是__new__ #!/usr/bin/env pytho ...

  4. [算法题] Remove Duplicates from Sorted Array ii

    题目内容 本题来源LeetCode Follow up for "Remove Duplicates": What if duplicates are allowed at mos ...

  5. .Net大局观(2).NET Core 2.0 特性介绍和使用指南

    .NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,系统地介绍了.NET Core 2.0及生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径.提纲来用. ...

  6. HDU 1028 Ignatius and the Princess III:dp or 母函数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意: 给你一个正整数n,将n拆分成若干个正整数之和,问你有多少种方案. 注:"4 = ...

  7. python学习之字符串(下)

    ----------------------------------------------实际应用中的其他常见的字符串方法 >>>line = "the knights ...

  8. MySQL Flush导致的等待问题

    --MySQL Flush导致的等待问题 -------------------------------2014/07/13 前言 在实际生产环境中有时会发现大量的sql语句处于waiting for ...

  9. 自动生成AWR报告

    --自动生成AWR报告 -------------------2013/09/23   脚本代码:   #!/bin/bash   AWR_FORMAT=html NUM_DAYS=1   MAX_S ...

  10. 再起航,我的学习笔记之JavaScript设计模式10(单例模式)

    单例模式 单例模式(Singleton) : 又被称为单体模式,是只允许实例化一次的对象类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 命名空间 单例模式可能是JavaScript中我们最 ...