今天学习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

运行管理员线程和用户线程小练习相关推荐

  1. java守护线程与用户线程_详解Java线程-守护线程与用户线程

    干java 开发这么多年, 之前一直没留意java 进程还区分守护进程和用户进程.守护进程这个概念最早还是在linux系统中接触的,直到近期使用java开发心跳检测功能时,使用Timer时才发现原来j ...

  2. java守护线程和用户线程

    java守护线程和用户线程 1.Java线程分类 Java分两类线程:1.用户线程 2.守护线程 2.区别 1.JVM在用户线程没有结束前,会一直和守护线程一同运行. 2.如果用户线程全部结束,那么J ...

  3. 守护线程和用户线程的真正区别(实例讲解)

    java 中的线程分为两种:守护线程(Daemon)和用户线程(User). 用户线程:我们平时所创建的都是用户线程. 守护线程:为用户线程提供服务. 任何线程都可以设置为守护线程和用户线程,通过方法 ...

  4. 操作系统 | 关于进程、线程、用户线程、内核线程

    操作系统 | 关于进程.线程.用户线程.内核线程 一.进程和线程 进程:操作系统分配资源的最小单位 线程:CPU调度的最小单位 每个线程共享进程的代码段 每个线程共享进程的数据段 每个线程共享进程的堆 ...

  5. 多线程之守护线程daemonVS用户线程

    线程分为守护线程和用户线程:系统默认的用户线程是主线程: 虚拟机中监控内存,垃圾回收等待,日志管理等都属于守护线程,一般默认不显示在控制台,默认false,虚拟机不用等待守护线程执行完毕:守护线程理论 ...

  6. java守护线程和用户线程的区别

    Java中的线程可以分为两类,即用户线程和守护线程.用户线程是为了完成任务,而守护线程主要是为其他线程服务. 守护线程的唯一用途是为其他线程提供服务.守护线程会随时中断,因此不要在守护线程上使用需要释 ...

  7. linux 线程--内核线程、用户线程实现方法

    Linux上进程分3种,内核线程(或者叫核心进程).用户进程.用户线程 内核线程拥有 进程描述符.PID.进程正文段.核心堆栈 当和用户进程拥有相同的static_prio 时,内核线程有机会得到更多 ...

  8. 内核线程和用户线程(SMP)

    用户级和内核级线程  用户级线程:任何应用程序都可以通过使用线程库设计成多线程程序.线程库是用于用户级线程管理的一个例程句,它包含用于创建和销毁线程的代码.在线程间传递消息和数据的代码.调度线程执行的 ...

  9. 额!Java中用户线程和守护线程区别这么大?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知, ...

最新文章

  1. 软件测试的发展空间大吗
  2. python smtp 群发邮件
  3. textview多行ellipsize=end不显示省略号的解决方法(一)
  4. 10位IT领袖给应届毕业生的10条忠告
  5. 【医疗影像处理】dcm2niix python3 使用
  6. 用python裁剪PDF文档
  7. macOS如何查看pkg安装包中的内部文件
  8. Java 实现加减乘除
  9. 7-3 将整数转换为汉字大写数字
  10. Unity内置Shader解读10——Self-Illumin/Bumped Diffuse
  11. 计算机的基本配件图片,计算机硬件的重要部件
  12. 关于支付宝的支付流程
  13. VC++实现打开文件和打开所在文件夹的功能(附源码)
  14. 30款后台源码。是我见过最全的后台代码。。
  15. C语言scanf()返回值以及EOF
  16. 学生上计算机课的好处,孩子上网课有什么优点
  17. 【RabbitMQ】Go语言实现六种消息中间件模型
  18. 显卡接口标准:支持PCI Express 2.0和 PCI Express 16X 有何差别
  19. jquery dataTable 隐藏某列
  20. 35 岁的程序员将何去何从——阮一峰

热门文章

  1. PAT 1057. 数零壹
  2. iOS中改变部分字体颜色
  3. IntelliJ IDEA2016学习小结
  4. 算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列
  5. 分布式检索系统的简单设计
  6. (转)flash位图缓存cacheAsBitmap
  7. VSTO为Excel快捷菜单添加项
  8. Retrofit2.0和Rxjava结合使用的简单记录
  9. 管理序列+序列的伪列+修改序列+删除序列
  10. 从网上搜索到的虚拟化笔记