zoukankan      html  css  js  c++  java
  • c#学习笔记线程

    多线程,顾名思义,就是在一个应用中实现多个任务,在c#中,线程Threads包含在System.Threading的namespace中。

    一、创建一个threads,最简单的方法就是创建一个threads实例

    eg:

         Thread myThread = new Thread( new ThreadStart(·····) );

    执行threads

         myThread.Start();

    使用threads的一个实例:

        Thread myThread = new Thread( new ThreadStart(Incrementer) );
        myThread.Start();
       console.WritLine("执行到此”);
       public void Incrementer( )
       { 
            for (int i =0;i<1000;i++)
           {
                 Console.WriteLine("Incrementer: {0}", i);

                 Thread.sleep(1000);
           }
       }

    在一个程序中执行一个包含此实例的任务,当到达了threads.start();时,将执行Incrementer操作中的Consloe.WriteLine操作,当执行完之后,才会继续执行threads.start();后面的操作,在这个实例中,会向控制台输出“执行到此”。

    注意到Incrementer中有 Thread.sleep(1000);语句,该语句是将此线程停止1秒,每一秒向控制台输出一个writeline语句。Thread.sleep()中时间默认为一毫秒为单位。

    下面是threads类中非常重要的方法:

    Start():启动线程;

    Sleep(int):静态方法,暂停当前线程指定的毫秒数; 

    Abort():通常使用该方法来终止一个线程;

    Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复; 

    Resume():恢复被Suspend()方法挂起的线程的执行。

    使用threads的一个实例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace thr
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("start");
                Thread th1 = new Thread(Thread1);
                th1.Start();
                Console.WriteLine("middle");
                Thread th2 = new Thread(Thread2);
                th2.Start();
                Console.WriteLine("end");
                Thread th3 = new Thread(Thread3);
                th3.Start();
    
            }
            public static void Thread1()
            {
                for (int i = 0; i < 10; i++)
                    Console.WriteLine("Thread1 exec: {0}", i);
            }
    
            public static void Thread2()
            {
                for (int j = 0; j < 10; j++)
                    Console.WriteLine("Thread2 exec: {0}", j);
            }
    
            public static void Thread3()
            {
                for (int a = 0; a < 10; a++)
                    Console.WriteLine("Thread3 exec: {0}", a);
            }
    
        }
    }

    结果为:

  • 相关阅读:
    flush privileges 什么意思
    kill
    xargs
    mysql 5.6 与5.7安装
    内核线程、轻量级进程、用户线程
    在gdb将所有线程的堆栈输出到文件中去
    GDB 反向调试(Reverse Debugging)
    redhat 6.6 安装 (LVM)
    GDB中创建要素数据集
    AO Identify地图交互
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/4494253.html
Copyright © 2011-2022 走看看