运行管理员线程和用户线程小练习
今天学习C#中线程的知识点,于是动手编些有关线程的小例子,用来理解线程的运行原理,希望能够帮助大家尽快入手
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConTest
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Display();
RunThread();
Console.Clear();
}
Console.Read();
}
private static void RunThread()
{
int input = Convert.ToInt32(Console.ReadLine());
ThreadSample ts = new ThreadSample();
switch (input)
{
case 1:
ts.ThreadStartToWork(ThreadSample.ThreadCatagory.AdminThread);
break;
case 2:
ts.ThreadStartToWork(ThreadSample.ThreadCatagory.UserThread);
break;
default:
//Thread.CurrentThread.Abort();
System.Diagnostics.Process.GetCurrentProcess().Kill();
break;
}
}
private static void Display()
{
Console.WriteLine("*******************************************");
for (int i = 0; i < 7; i++)
{
if (i == 3)
{
Console.WriteLine("* 1、管理员线程工作 *");
Console.WriteLine("* *");
}
else if (i == 4)
{
Console.WriteLine("* 2、普通用户线程工作 *");
Console.WriteLine("* *");
Console.WriteLine("* 3、输入0退出程序 *");
Console.WriteLine("* *");
}
else
{
Console.WriteLine("* *");
}
}
Console.WriteLine("*******************************************");
Console.WriteLine("请选择你需要的工作线程:");
}
static void ShowMsg()
{
}
}
class ThreadSample
{
public enum ThreadCatagory
{
AdminThread,
UserThread
}
ThreadStart s;
Thread t;
public void ThreadStartToWork(ThreadCatagory start)
{
switch (start)
{
case ThreadCatagory.AdminThread:
s = new ThreadStart(AdminThread);
break;
case ThreadCatagory.UserThread:
s = new ThreadStart(UserThread);
break;
default:
break;
}
t = new Thread(s);
t.Start();
t.Join();//阻塞调用线程,直到当前线程执行完毕,再执行调用线程(这是关键点否则出现不合逻辑的结果)
}
public void AdminThread()
{
Console.WriteLine("管理员线程正在启动......");
Thread.Sleep(5000);
Console.WriteLine("管理员线程正在运行中,请顾客耐心等等!!!!");
Thread.Sleep(5000);
Console.WriteLine("管理员线程正在结束,倒计时开始...");
for (int i = 5; i >=1; i--)
{
Thread.Sleep(1000);
Console.WriteLine(i);
}
Console.WriteLine("管理员线程已经结束了");
Thread.CurrentThread.Abort();
}
public void UserThread()
{
Console.WriteLine("用户线程正在启动......");
Thread.Sleep(5000);
Console.WriteLine("用户线程正在运行中,请顾客耐心等等!!!!");
Thread.Sleep(5000);
Console.WriteLine("用户线程正在结束,倒计时开始...");
for (int i = 5; i >= 1; i--)
{
Thread.Sleep(1000);
Console.WriteLine(i);
}
Console.WriteLine("用户线程已经结束了");
Thread.CurrentThread.Abort();
}
}
}
转载于:https://www.cnblogs.com/ganquanfu2008/archive/2013/03/22/2975759.html
运行管理员线程和用户线程小练习相关推荐
- java守护线程与用户线程_详解Java线程-守护线程与用户线程
干java 开发这么多年, 之前一直没留意java 进程还区分守护进程和用户进程.守护进程这个概念最早还是在linux系统中接触的,直到近期使用java开发心跳检测功能时,使用Timer时才发现原来j ...
- java守护线程和用户线程
java守护线程和用户线程 1.Java线程分类 Java分两类线程:1.用户线程 2.守护线程 2.区别 1.JVM在用户线程没有结束前,会一直和守护线程一同运行. 2.如果用户线程全部结束,那么J ...
- 守护线程和用户线程的真正区别(实例讲解)
java 中的线程分为两种:守护线程(Daemon)和用户线程(User). 用户线程:我们平时所创建的都是用户线程. 守护线程:为用户线程提供服务. 任何线程都可以设置为守护线程和用户线程,通过方法 ...
- 操作系统 | 关于进程、线程、用户线程、内核线程
操作系统 | 关于进程.线程.用户线程.内核线程 一.进程和线程 进程:操作系统分配资源的最小单位 线程:CPU调度的最小单位 每个线程共享进程的代码段 每个线程共享进程的数据段 每个线程共享进程的堆 ...
- 多线程之守护线程daemonVS用户线程
线程分为守护线程和用户线程:系统默认的用户线程是主线程: 虚拟机中监控内存,垃圾回收等待,日志管理等都属于守护线程,一般默认不显示在控制台,默认false,虚拟机不用等待守护线程执行完毕:守护线程理论 ...
- java守护线程和用户线程的区别
Java中的线程可以分为两类,即用户线程和守护线程.用户线程是为了完成任务,而守护线程主要是为其他线程服务. 守护线程的唯一用途是为其他线程提供服务.守护线程会随时中断,因此不要在守护线程上使用需要释 ...
- linux 线程--内核线程、用户线程实现方法
Linux上进程分3种,内核线程(或者叫核心进程).用户进程.用户线程 内核线程拥有 进程描述符.PID.进程正文段.核心堆栈 当和用户进程拥有相同的static_prio 时,内核线程有机会得到更多 ...
- 内核线程和用户线程(SMP)
用户级和内核级线程 用户级线程:任何应用程序都可以通过使用线程库设计成多线程程序.线程库是用于用户级线程管理的一个例程句,它包含用于创建和销毁线程的代码.在线程间传递消息和数据的代码.调度线程执行的 ...
- 额!Java中用户线程和守护线程区别这么大?
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知, ...
最新文章
- 软件测试的发展空间大吗
- python smtp 群发邮件
- textview多行ellipsize=end不显示省略号的解决方法(一)
- 10位IT领袖给应届毕业生的10条忠告
- 【医疗影像处理】dcm2niix python3 使用
- 用python裁剪PDF文档
- macOS如何查看pkg安装包中的内部文件
- Java 实现加减乘除
- 7-3 将整数转换为汉字大写数字
- Unity内置Shader解读10——Self-Illumin/Bumped Diffuse
- 计算机的基本配件图片,计算机硬件的重要部件
- 关于支付宝的支付流程
- VC++实现打开文件和打开所在文件夹的功能(附源码)
- 30款后台源码。是我见过最全的后台代码。。
- C语言scanf()返回值以及EOF
- 学生上计算机课的好处,孩子上网课有什么优点
- 【RabbitMQ】Go语言实现六种消息中间件模型
- 显卡接口标准:支持PCI Express 2.0和 PCI Express 16X 有何差别
- jquery dataTable 隐藏某列
- 35 岁的程序员将何去何从——阮一峰