【C#多线程编程实战笔记】一、 线程基础
创建线程
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#多线程编程实战笔记】一、 线程基础的更多相关文章
- python 多线程编程之进程和线程基础概念
多线程编程 在多线程(multithreaded,MT)出现之前,计算机程序的执行都是由单个步骤序列组成的,该序列组合在主机的CPU中按照同步顺序执行.无论是任务本身需要按照步骤顺序执行,还是整个过程 ...
- 【C#多线程编程实战笔记】二、 线程同步
使用Mutex类-互斥锁 owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 name为定义的互斥锁名称,在整个操作系统只有一个命名未CSharpThreadingCookb ...
- C#多线程编程实战1.6线程优先级
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- Java多线程编程实战指南(核心篇)读书笔记(五)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- 《Java多线程编程实战指南(核心篇)》阅读笔记
<Java多线程编程实战指南(核心篇)>阅读笔记 */--> <Java多线程编程实战指南(核心篇)>阅读笔记 Table of Contents 1. 线程概念 1.1 ...
- Java多线程编程实战指南(核心篇)读书笔记(四)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(三)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(二)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76651408冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(一)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
随机推荐
- Java 简单的 socket 编程入门实战
这个是给女朋友写的:) 首先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端) 我们需要使用java来实现客户端与服务器的数据传输 先帖上代码 注意这里两张代码处于两个j ...
- java连接数据库
package com.shsxt.jdbcs; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- python的__init__几种方法总结
参考 __init__() 这个方法一般用于初始化一个类 但是 当实例化一个类的时候, __init__并不是第一个被调用的, 第一个被调用的是__new__ #!/usr/bin/env pytho ...
- [算法题] Remove Duplicates from Sorted Array ii
题目内容 本题来源LeetCode Follow up for "Remove Duplicates": What if duplicates are allowed at mos ...
- .Net大局观(2).NET Core 2.0 特性介绍和使用指南
.NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,系统地介绍了.NET Core 2.0及生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径.提纲来用. ...
- HDU 1028 Ignatius and the Princess III:dp or 母函数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意: 给你一个正整数n,将n拆分成若干个正整数之和,问你有多少种方案. 注:"4 = ...
- python学习之字符串(下)
----------------------------------------------实际应用中的其他常见的字符串方法 >>>line = "the knights ...
- MySQL Flush导致的等待问题
--MySQL Flush导致的等待问题 -------------------------------2014/07/13 前言 在实际生产环境中有时会发现大量的sql语句处于waiting for ...
- 自动生成AWR报告
--自动生成AWR报告 -------------------2013/09/23 脚本代码: #!/bin/bash AWR_FORMAT=html NUM_DAYS=1 MAX_S ...
- 再起航,我的学习笔记之JavaScript设计模式10(单例模式)
单例模式 单例模式(Singleton) : 又被称为单体模式,是只允许实例化一次的对象类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 命名空间 单例模式可能是JavaScript中我们最 ...