[Thread trong c#] Một thread được định nghĩa như là một đường thực thi (execution path) của một chương trình. Mỗi Thread định nghĩa một dòng điều khiển duy nhất. Nếu application của bạn gồm các hoạt động phức tạp và tốn thời gian, thì nó thường là rất hữu ích khi thiết lập các execution path hoặc Thread, với mỗi Thread thực hiện một công việc cụ thể. Show Các Thread là các tiến trình nhẹ. Một ví dụ phổ biến của sự sử dụng Thread là sự triển khai lập trình tương tranh (concurrent programming) bởi các hệ điều hành hiện đại. Sử dụng các Thread tiếp kiệm sự hao phí của CPU cycle và tăng hiệu quả của một application. Tới chương này, chúng ta đã viết các chương trình mà một Thread đơn chạy như là một tiến trình đơn, đó là trình chạy thể hiện của application. Tuy nhiên, theo cách này, application có thể thực hiện một công việc tại một thời điểm. Để làm nó thực thi nhiều hơn một tác vụ tại một thời điểm, nó có thể được phân chia thành các Thread nhỏ hơn. Vòng đời của Thread trong C#Vòng đời của một Thread bắt đầu khi một đối tượng của lớp System.Threading.Thread được tạo và kết thúc khi Thread đó được kết thúc hoặc hoàn thành việc thực thi. Dưới đây là các trạng thái đa dạng trong vòng đời của một Thread trong C#:
Quảng cáo Main Thread trong C#Trong C#, lớp System.Threading.Thread được sử dụng để làm việc với các Thread. Nó cho phép tạo và truy cập các Thread riêng biệt trong một Multithreaded Application. Thread đầu tiên để được thực thi trong một tiến trình được gọi là Main Thread trong C#. Khi một chương trình C# bắt đầu thực thi, Main Thread được tự động tạo ra. Các Thread, được tạo bởi sử dụng lớp Thread, được gọi các Thread con của Main Thread. Bạn có thể truy cập một Thread bởi sử dụng thuộc tính CurrentThread của lớp Thread. Dưới đây là chương trình ví dụ minh họa cho sự thực thi Main Thread trong C#: using System; using System.Threading; namespace VietJackCsharp { class TestCsharp { public static void Main() { Console.WriteLine("Da luong trong C#"); Console.WriteLine("Vi du minh hoa Main Thread"); Console.WriteLine("-----------------------------------"); Thread th = Thread.CurrentThread; th.Name = "MainThread"; Console.WriteLine("Day la {0}", th.Name); Console.ReadKey(); } } } Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: Quảng cáo Thuộc tính và Phương thức của lớp Thread trong C#Bảng dưới liệt kê một số thuộc tính được sử dụng phổ biến nhất của lớp Thread trong C#:
Bảng này liệt kê các phương thức được sử dụng phổ biến nhất của lớp Thread trong C#:
Tạo Thread trong C#Trong C#, các Thread được tạo bằng việc kế thừa lớp Thread. Sau đó, Lớp Thread được kế thừa gọi phương thức Start() để bắt đầu sự thực thi của Thread con. Sau đây là ví dụ minh họa việc tạo Thread trong C#: using System; using System.Threading; namespace VietJackCsharp { class TestCsharp { public static void CallToChildThread() { Console.WriteLine("Thread con bat dau!!!"); } static void Main(string[] args) { Console.WriteLine("Da luong trong C#"); Console.WriteLine("Vi du minh hoa cach tao Thread"); Console.WriteLine("----------------------------------"); ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("Trong Main Thread: tao thread con."); Thread childThread = new Thread(childref); childThread.Start(); Console.ReadKey(); } } } Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: Quản lý Thread trong C#Lớp Thread trong C# cung cấp các phương thức đa dạng để quản lý các Thread. Ví dụ sau minh họa cách sử dụng phương thức sleep() để làm một Thread dừng trong một khoảng thời gian cụ thể. using System; using System.Threading; namespace VietJackCsharp { class TestCsharp { public static void CallToChildThread() { Console.WriteLine("Bat dau Thread con!!!"); // Thread nay dung khoang 5000 milisecond int sleepfor = 5000; Console.WriteLine("Thread con dung trong khoang {0} giay", sleepfor / 1000); Thread.Sleep(sleepfor); Console.WriteLine("Thread con phuc hoi!!!"); } static void Main(string[] args) { Console.WriteLine("Da luong trong C#"); Console.WriteLine("Vi du minh hoa quan ly Thread"); Console.WriteLine("---------------------------------"); ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("Trong Main Thread: tao Thread con."); Thread childThread = new Thread(childref); childThread.Start(); Console.ReadKey(); } } } Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: Hủy Thread trong C#Phương thức Abort() được sử dụng để hủy các Thread trong C#. Trong thời gian runtime, chương trình hủy bỏ Thread bằng việc ném một ThreadAbortException. Exception này không thể được bắt, điều khiển được gửi tới khối finally, nếu là không. Dưới đây là chương trình minh họa việc sử dụng phương thức Abort() để hủy bỏ các Thread trong C#: using System; using System.Threading; namespace VietJackCsharp { class TestCsharp { public static void CallToChildThread() { try { Console.WriteLine("Bat dau Thread con!!!"); // gia su chung ta dem tu 0 toi 10 for (int counter = 0; counter <= 10; counter++) { Thread.Sleep(500); //dung trong khoang 5 giay Console.WriteLine(counter); } Console.WriteLine("Thread con hoan thanh."); } catch (ThreadAbortException e) { Console.WriteLine("Thread Abort Exception!!!"); } finally { Console.WriteLine("Khong the bat Thread Exception!!!"); } } static void Main(string[] args) { Console.WriteLine("Da luong trong C#"); Console.WriteLine("Vi du minh hoa huy Thread"); Console.WriteLine("-------------------------------------"); ThreadStart childref = new ThreadStart(CallToChildThread); Console.WriteLine("Trong Main Thread: tao Thread con."); Thread childThread = new Thread(childref); childThread.Start(); //dung Main Thread trong khoang 2 giay Thread.Sleep(2000); //bay gio huy thread con Console.WriteLine("Trong Main Thread: huy Thread con."); childThread.Abort(); Console.ReadKey(); } } } Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS. Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube: Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học. Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi. Bài viết liên quan
|