Table of Contents

    C# example that demonstrates the multithreading

    Here's a simple C# example that demonstrates the multithreading concept as illustrated in your diagram:

    Multithreading Concept - Non-linear start, execution and Completion of thread
    Figure: Multithreading Concept - Non-linear start, execution and Completion of thread


    Namespace required:

    • System.Threading is a namespace in the .NET framework that contains classes and types for working with threading. It provides a variety of features for managing threads and coordinating their operations.
    
    using System;
    using System.Threading;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Start Program");
    
                // Create threads
                Thread thread1 = new Thread(Task1);
                Thread thread2 = new Thread(Task2);
                Thread thread3 = new Thread(Task3);
    
                // Start threads
                thread3.Start(); // Start Thread 3 first
                thread1.Start(); // Start Thread 1 second
                thread2.Start(); // Start Thread 2 third
    
                // Wait for all threads to complete
                thread1.Join();
                thread2.Join();
                thread3.Join();
    
                Console.WriteLine("All Threads Complete");
            }
    
            static void Task1()
            {
                Console.WriteLine("Thread 1: Executes Task 1");
                // Simulate work
                Thread.Sleep(3000);
                Console.WriteLine("Thread 1 Complete (First)");
            }
    
            static void Task2()
            {
                Console.WriteLine("Thread 2: Executes Task 2");
                // Simulate work
                Thread.Sleep(2000);
                Console.WriteLine("Thread 2 Complete (Second)");
            }
    
            static void Task3()
            {
                Console.WriteLine("Thread 3: Executes Task 3");
                // Simulate work
                Thread.Sleep(3000);
                Console.WriteLine("Thread 3 Complete (Third)");
            }
        }
    }
    

    Output:

    
    Start Program
    Thread 3: Executes Task 3
    Thread 1: Executes Task 1
    Thread 2: Executes Task 2
    Thread 1 Complete (First)
    Thread 2 Complete (Second)
    Thread 3 Complete (Third)
    All Threads Complete
     
    
    Multithreading Concept - C# Program Output
    Figure: Multithreading Concept - C# Program Output


    Explanation:

    1. Main Method:

      • Initializes and starts three threads: Thread 3, Thread 1, and Thread 2 in that order.
    2. Task Methods:

      • Each task method (Task1, Task2, Task3) simulates work using Thread.Sleep to represent varying execution times.
      • After completing their tasks, each thread prints a message indicating completion.
    3. Thread Joining:

      • The Join method is used to wait for each thread to finish before the program outputs "All Threads Complete".

    Key Points:

    • The threads are started in a specific order, but their completion may vary based on the sleep duration, simulating the asynchronous nature of multithreading.