2013-07-02 36 views
5

Tôi đang có một lớp học mở rộng Chủ đề.Làm thế nào để kiểm tra xem một chuỗi đã được bắt đầu hay không trong Java?

Tôi sẽ bắt đầu chuỗi tại một số điểm.

Sau một thời gian, tôi cần phải kiểm tra xem chuỗi đó đã được bắt đầu chưa?

Để tôi có thể bắt đầu chuỗi tại điểm cụ thể đó.

lớp thread sẽ được,

public class BasicChatListener extends Thread{ 

    public void run(){ 


    } 

} 

Tôi cần biết những chủ đề cụ thể của một lớp BasicChatListener đang chạy hay không? Vì tôi có nhiều luồng đã chạy trong ứng dụng của mình.

Cách các thành viên ngăn xếp của chúng tôi sẽ giúp tôi.

+0

Bạn đã giữ tham chiếu đến 'BasicChatListener' được chỉ định, đúng không? – johnchen902

+0

Có vẻ như bạn cần tạo một khởi đầu chỉ với một người nghe. Bạn có thể tạo thể hiện của 'BasicChatListener' và khởi động nó cùng một lúc không? –

+0

@Vignesh Vino Nhưng Làm thế nào để tham khảo chủ đề 'BasicChatListener' đặc biệt để kiểm tra? Thậm chí tôi có thể có nhiều luồng trong ứng dụng của tôi? Đó là những gì tôi đã hỏi. –

Trả lời

6

Bạn có thể sử dụng Thread.getState() và sử dụng states tương ứng.

Lưu ý rằng khi bạn đọc trạng thái này , nó có thể đã thay đổi, nhưng bạn có thể xác định điều gì đó quan tâm. Hãy xem this state diagram để biết các chuyển đổi có sẵn.

+0

+1 sơ đồ trạng thái liên kết hữu ích –

+0

Làm thế nào để tham chiếu chuỗi 'BasicChatListener' đặc biệt để kiểm tra? –

+0

Có lẽ tốt hơn nên sử dụng Màn hình, Semaphore hoặc một số đối tượng được chia sẻ khác vì các trạng thái Thread bị giới hạn. Chạy có thể không có nghĩa là bắt đầu đến mức độ bạn muốn. –

1

Bạn có thể kiểm tra xem nó với isAlive ..

isAlive kiểm tra nếu chủ đề này vẫn còn sống. Một sợi chỉ còn sống nếu nó đã được bắt đầu và chưa chết.

+0

+1 Đối với tôi, sử dụng isAlive rõ ràng hơn gọi getState và phải kiểm tra xem trạng thái có phải là mới không. –

1

tôi sử dụng mã này Thread.isAlive()

1

Bạn có thể sử dụng GetState()

Trả về trạng thái của chủ đề này. Phương pháp này được thiết kế để sử dụng trong việc giám sát trạng thái hệ thống, không phải để điều khiển đồng bộ hóa.

hoặc boolean isAlive()

thử nghiệm nếu chủ đề này vẫn còn sống. Một sợi chỉ còn sống nếu nó đã được bắt đầu và chưa chết.

1

Thread.isAlive() có thể xác định xem chuỗi có đang chạy hay không.

Kiểm tra xem chuỗi này có còn hoạt động hay không. Một sợi chỉ còn sống nếu nó đã được bắt đầu và chưa chết.

Thread#getState(); có thể trả về trạng thái chính xác của một luồng.

Trả về trạng thái của chuỗi này. Phương pháp này được thiết kế để sử dụng trong việc giám sát trạng thái hệ thống, không phải để điều khiển đồng bộ hóa.

3

Sử dụng một trong hai Thread#isAlive()

if (Thread.currentThread().isAlive()) 

javadoc nói:

thử nghiệm nếu chủ đề này vẫn còn sống. Một sợi chỉ còn sống nếu nó đã được bắt đầu và chưa chết.

Hoặc, sử dụng Thread#getState() như

Thread.State currState = Thread.currentThread().getState(); 
if (currState != Thread.State.NEW && currState != Thread.State.TERMINATED) 

javadoc nói:

Trả về trạng thái của chủ đề này. Phương pháp này được thiết kế để sử dụng trong việc giám sát trạng thái hệ thống, không phải để điều khiển đồng bộ hóa.

+0

Tại sao bỏ phiếu xuống? :( –

Các vấn đề liên quan