cuốn sách gpt4 ai đã làm

Sao chép mảng chủ đề

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-13 03:53:08 27 4
mua khóa gpt4 Nike

Chú ý một chút

ThreadGroup có hai phương pháp sao chép các luồng.
public int enumerate(Thread list[]) // Sẽ sao chép tất cả các thread đang hoạt động trong ThreadGroup sang mảng Thread, tương đương với enumerate(list,true)

public int enumerate(Thread list[], boolean recurse) // sẽ sao chép tất cả các luồng đang hoạt động trong ThreadGroup vào mảng Thread. Nếu recurse = true, phương thức này sẽ lặp lại tất cả các luồng đang hoạt động trong nhóm con vào mảng Thread ở giữa.

Phân tích mã nguồn thứ hai

Hai phương thức trên sẽ gọi phương thức sau.

int enumerate(Danh sách chủ đề [], int n, boolean recurse) { int nggroupsSnapshot = 0; ThreadGroup[]groupSnapshot = null; đã đồng bộ hóa (this) { if (destroyed) { return 0; int nt = nthreads; > list.length - n) { nt = list.length - n } for (int i = 0; i < nt; i++) { if (threads[i].isAlive()) { list[n++] = thread[i]; } } if (recurse) { ngroupsSnapshot = ngroups; if (groups != null) {groupSnapshot = Arrays.copyOf( nhóm, nggroupsSnapshot); } else { nhómSnapshot = null } } } if (recurse) { for (int i = 0 ; i < nggroupsSnapshot ; i++) { n =groupSnapshot[i].enumerate(list, n, true);

Ba trận chiến thực tế

1 mã

package concurrent; import java.util.concurrent.TimeUnit; public class Enumerate { public static void main(String[] args) { // Tạo một nhóm luồng ThreadGroup myGroup = new ThreadGroup("MyGroup"); chuyển vào myGroup Chủ đề chủ đề = Chủ đề mới (myGroup, () -> { while (true) { try { TimeUnit.SECONDS.sleep(1); } Catch (InterruptedException e) { e.printStackTrace(); } } }, "MyThread"); thread.start(); thử { TimeUnit.MILLISECONDS.sleep(2); } Catch (InterruptedException e) { e.printStackTrace( ); } ThreadGroup mainGroup = Thread.currentThread().getThreadGroup() list = Chủ đề mới [mainGroup.activeCount()]; int recurseSize = mainGroup.enumerate(list); System.out.println(recurseSize); recurseSize = mainGroup.enumerate(list, false); }

2 bài kiểm tra

2

1

3 mô tả 

Trước tiên, hãy xác định một ThreadGroup và thêm nhóm vào nhóm chính, sau đó xác định một luồng và thêm nó vào myGroup, cuối cùng gọi các phương thức liệt kê đệ quy và không đệ quy tương ứng.

Sau khi chạy đoạn mã trên, đầu ra cuối cùng sẽ nhỏ hơn đầu ra 1. Đó là do phép đệ quy được đặt thành false trong mã và các luồng trong myGroup sẽ không được đưa vào.

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress