首页 > 其他分享 >36 多线程 知识点

36 多线程 知识点

时间:2023-01-08 23:33:14浏览次数:32  
标签:知识点 Console NewThreadLogic Thread void 36 线程 进程 多线程

//了解进程

//进程(Process)是计算机中的程序关于某数据集合上的一次运行活动
//是系统进行资源分配和调度的基本单位,是操作系统结构的基础
//说人话:打开一个应用程序就是在操作系统上开启了一个进程
//进程之间可以相互独立运行,互不干扰
//进程之间也可以互相访问、操作

//了解线程

//操作系统能够进行运算调度的最小单位
//它被包含在进程之中,是进程中的事件运作单位
//一条线程指的是进程中一个单一顺序的控制器,一个进程中可以并发多个线程
//我们写的程序 都在主线程中

//简单理解线程
//就是代码从上到下运行的一条”管道“

//语法相关

//线程类 Thread
//需要引用命名空间using system.Threading
// 1申明一个新的线程
//  注意 线程执行的代码 需要封装到一个函数中
     Thread t = new Thread(NewThreadLogic);

     static void NewThreadLogic()//线程方法
      {
            Console.WriteLine("新开一个线程");
      };
// 2启动线程
     t.Start();
// 3设置为后台线程

// 当前台线程都结束了的时候,整个程序也就结束了,即使还有后台线程正在运行
//后台线程不会防止应用程序的进程被终止掉
//如果不设置为后台线程 可能导致进程无法正常关闭

// 4关闭释放一个线程
// 如果开启的线程中不是死循环 是能够结束的逻辑 那么 不用刻意的去关闭它
//如果是死循环 想要中止这个线程 有两种方法
// 4-1 死循环种Bool标识
     Bool IsRuning=true; //默认为真,退出死循环致标识为False推出循环 
      static void NewThreadLogic()//线程方法
       {
            while(IsRuning)
          {
           //循环逻辑
          }
       };

// 4-2 通过线程提供的方法
     try
    {
      t.Abort();
      t=null;对空资源进行回收
    }
    catch
   {

   }
   

// 5线程之间共享数据

// 多个线程使用的内存是共享的,都属于该应用(进程)
//所以要注意 当多线程 同时操作同一片内存区域时可能会出现问题
//可以通过加锁的形式避免问题
  //类如下列子
    static void Main(string[] args)
        {
           
            Thread t = new Thread(NewThreadLogic);
            t.Start();

            t.IsBackground = true;

            while (true)
            {
                Console.SetCursorPosition(0, 0);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("@");
            }        
           
            Console.ReadKey();
        }

        static void NewThreadLogic()
        {
           while (true)
           {
                Console.SetCursorPosition(10, 0);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("*");
            }
          
        }
![image](/i/l/?n=23&i=blog/2893229/202301/2893229-20230108232827318-1478527012.png)

标签:知识点,Console,NewThreadLogic,Thread,void,36,线程,进程,多线程
From: https://www.cnblogs.com/L-love-Z/p/17035749.html

相关文章

  • python 每天一个知识点 第三天
    字典dict一,字典是什么?字典是Python中比较常用的数据结构,字典中每个成员是以“键:值”对的形式存放具有映射关系的数据。语法:字典以大括号“{}”包围的以“键:值”对......
  • 多线程
    多线程一、创建方式:1.继承Thread类(重点)2.实现Runnable接口(重点)3.实现Callable接口(了解)二、.Lamda表达式1.简洁代码2.避免匿名内部类定义过多3.关键:函数式接口:一个接口只包......
  • 使用ThreadPoolExecutor and schedule进行创建线程池(多线程-定时任务-数据同步-任务队
    使用ThreadPoolExecutorandschedule进行创建线程池(多线程-定时任务-数据同步-任务队列)#使用ThreadPoolExecutorandschedule进行创建线程池(多线程-定时任务-数据同步-......
  • LeetCode 236_二叉树的最近公共祖先
    LeetCode236:二叉树的最近公共祖先题目给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近......
  • java多线程知识点总结
    一、线程的三种创建方法1-1继承Thread继承thread方法然后重写run方法,在用start开启线程。代码实现:Threadt=newThread(){@Overridepu......
  • C++ - 多线程
    1.多线程传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下......
  • 多线程的事务回滚问题
    多线程的事务回滚问题环境要求1.mybatis-plus或mybatis2.支持单表的增删改查3.书写工具类将集合平分,获取线程池importjava.util.ArrayList;importjava.util.List;......
  • 30 lambda表达式 知识点
    //无参无返回值Actionat=()=>{Console.WriteLine("无参无返回");};at.Invoke();//有参无返回值Action<int>st1=(intvalue)=>{......
  • 3108 9361 9460等卡在浪潮两路机器UEFI模式下配置步骤
    1.RAID卡信息查看以及相关设置1.1开机进入到BIOS的RAID界面开机在浪潮LOGO处按”Delete”键进入到BIOS操作界面,选择”Advanced”选项,如下图:  择”AVAGOMegaRAID......
  • 平面设计师不得不知道的知识点?-优漫
      平面设计师不得不知道的知识点?平面设计就是在传统设计的基础上,根据新时代的要求,对传统平面设计的改进和创新。随着社会发展,人们对传统平面设计的认识有了很大的提高,认......