Professional Documents
Culture Documents
Thread Class: 2. Properties and Methods
Thread Class: 2. Properties and Methods
Thread class
Trong C#, một hệ thống đa luồng được xây dựng dựa trên lớp Thread, lớp này
sẽ thực thi các luồng. Lớp chứa một số phương thức và thuộc tính giúp quản lý
và tạo các luồng và lớp này được định nghĩa trong System.Threading namespace.
class GFG {
// Main Method
static public void Main()
{
Thread thr;
- IsAlive để kiểm tra xem chuỗi còn chạy hay không. Hay nói cách
khác, giá trị của thuộc tính này cho biết quá trình thực thi hiện tại
của luồng.
+ Cú pháp:
Public Bool IsAlive { get; }
+ Giá trị trả về: Thuộc tính này trả về true nếu luồng được bắt đầu và
không bị chấm dứt bình thường hoặc bị hủy bỏ. Nếu không, trả
về false . Kiểu trả về của thuộc tính này là System.Boolean .
+ Ví dụ
// C# program to illustrate the
// use of IsAlive property
using System;
using System.Threading;
// Main Method
static public void Main()
{
Thread thr;
class GFG {
// Main Method
static public void Main()
{
Thread T;
// Main Method
static public void Main()
{
Thread T;
class Geek {
// Driver class
public class GFG {
// Main Method
static public void Main()
{
thr1.Start();
thr2.Start();
thr3.Start();
thr4.Start();
}
}
Output:
The name of the current thread is: Geeks2
The name of the current thread is: Geeks3
The name of the current thread is: Geeks4
The name of the current thread is: Geeks1
- Priority: Lấy hoặc thiết lập một giá trị chỉ quyền ưu tiên của một Thread
+ Cú pháp: public ThreadPriority Priority{ get; set; }
+ Các mức độ ưu tiên:
Cao nhất: Giá trị của ưu tiên này là 4.
Trên mức bình thường: Giá trị của mức độ ưu tiên này là
3.
Bình thường: Giá trị của ưu tiên này là 2.
Dưới mức bình thường: Giá trị của mức độ ưu tiên này là
1.
Thấp nhất: Giá trị của mức độ ưu tiên này là 0.
+ Ví dụ:
// C# program to illustrate how to
// set and get the priority of threads
using System;
using System.Threading;
class GFG {
// Main Method
static public void Main()
{
T1.Priority);
T2.Priority);
T3.Priority);
}
- ThreadState: lấy một giá trị chứa các trạng thái của Thread hiện tại
+ Cú pháp: public ThreadState ThreadState{ get; }
+ Ví dụ:
// C# program to illustrate the
// use of ThreadState property
using System;
using System.Threading;
// Main Method
static public void Main()
{
Thread thr;
- Sleep: Tạm dừng luồng hiện tại trong khoảng thời gian chỉ định
- Start: bắt đầu một Thread
3. Vòng đời của Thread
- 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:
Unstarted State: Nó là tình huống khi instance của Thread được tạo, nhưng
phương thức Start chưa được gọi.
Ready State: Nó là tình huống khi Thread đó sẵn sàng để chạy và đợi CPU cycle.
Not Runnable State: Một Thread là không thể thực thi (not executable), khi:
Trong C#, để lấy trạng thái hiện tại của luồng, hãy sử dụng thuộc
tính ThreadState hoặc IsAlive do lớp Thread cung cấp.
+ Cú pháp: public ThreadState ThreadState{ get; }
Hoặc: public bool IsAlive { get; }
- Thread Class cung cấp các phương thức để thể hiện các trạng thái của
Thread:
Phương thức Sleep() được sử dụng để tạm dừng thực thi hiện tại của
luồng trong một phần nghìn giây đã chỉ định, để các luồng khác có cơ hội bắt đầu
thực thi hoặc có thể nhận CPU để thực thi.
Phương thức Join() được sử dụng để làm cho tất cả các luồng đang gọi
đợi cho đến khi luồng chính, tức là luồng đã tham gia hoàn thành công việc của nó.
Phương thức Abort() được sử dụng để hủy bỏ luồng.
Phương thức Suspend() được gọi để tạm dừng luồng.
Phương thức Resume() được gọi để tiếp tục luồng bị treo.
Phương thức Start() được sử dụng để gửi một luồng vào Runnable
State
4. ThreadState
- Một Thread luôn luôn trong một vài trạng thái hoặc một trạng thái khác từ
lúc bắt đầu đến khi kết thúc
- Thuộc tính ThreadState của Thread Class định nghĩa trạng thái của
Thread trong suốt quá trình thực thi và cung cấp thông tin về trạng thái
luồng
- Một số trạng thái của vòng đời một Thread:
+ Aborted: Thread bị hủy bỏ và hiện trạng thái Stopped
+ AbortedRequested: một yêu cầu hủy bỏ bị đưa ra thông qua pp
Thread.Abort nhưng Thread sẽ không đk nhận
System.Threading.ThreadAbortException
+ Background: Thread là background thread và sẽ thực thi ở nền. Trạng
thái này được điều chỉnh bởi thuộc tính Thread.IsBackground
+ Running: Thread hiện tại đang được thực thi và không có
ThreadAbortException đang chờ xử lý
+ Stopped: Thread bị hủy bỏ hoặc tạm dừng
+ StopRequested: Thread bị yêu cầu tạm dừng.
+ Unstarted: Thread được tạo và không được thực thi
+ WaitSleepJoin: Thread bị chặn bằng cách dùng Thread.Sleep hoặc
Thread.Join