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

java - người nghe và chủ đề

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 09:57:49 25 4
mua khóa gpt4 Nike

Tôi cảm thấy đây có thể là một câu hỏi ngu ngốc, nhưng tôi không có nhiều kinh nghiệm với người nghe... Dù sao, tôi có một câu hỏi về chủ đề và người nghe, hãy xem xét mã này (có thể không đúng về mặt cú pháp, điều này vừa đến với tôi). ):

lớp công khai Nội dung {
riêng tư SimpleLongProperty time = new LongProperty(this, "time");
Người thực thi riêng tư thực thi;

Nội dung công cộng(Đồng hồ đồng hồ) {
time.bind(clock.getValue);
thực thi = Executors.newFixedThreadPool(5);
}

khoảng trống công khai someAction() {
for(int i = 0; i < 5; i++) {
execute.execute(scheduleTask());
}
}

lịch trình có thể chạy công khaiTask() {
time.addListener((obs, oldV, newV) -> {
// Mã ở đây
});
}
}

Khi gọi someAction() và gọi ScheduleTask() 5 lần để thêm 5 người nghe, mỗi người nghe có thực thi mã trong luồng riêng của mình khi thời gian được cập nhật không? Hay nó sẽ thực thi mã trong luồng chính vì đó là thời điểm?

câu trả lời hay nhất

Việc có thể viết mã và kiểm tra nó trên máy trạm đã tìm ra câu trả lời cho tôi.

lớp công khai Nội dung {
thời gian LongProperty riêng tư = SimpleLongProperty mới (cái này, "thời gian");
Người thực thi riêng tư thực thi;

Nội dung công cộng(Đồng hồ đồng hồ) {
time.bind(clock.getValue);
thực thi = Executors.newCachedThreadPool(runnable -> {
Chủ đề t = Chủ đề mới (có thể chạy được);
t.setDaemon(true);
trả lại t;
});
}

khoảng trống công khai someAction() {
for(int i = 0; i < 5; i++) {
execute.execute(scheduleTask(i));
}
}

public Runnable lịchTask(int i) {
time.addListener((obs, oldV, newV) -> {
System.out.println("Nhiệm vụ " + i + ": " + Thread.currentThread());
});
}
}

Đoạn mã trên sẽ in:

Nhiệm vụ 0: Chủ đề [Chủ đề ứng dụng JavaFX, 5, chính]
Nhiệm vụ 1: Chủ đề [Chủ đề ứng dụng JavaFX, 5, chính]
Nhiệm vụ 2: Chủ đề [Chủ đề ứng dụng JavaFX, 5, chính]
Nhiệm vụ 3: Chủ đề [Chủ đề ứng dụng JavaFX, 5, chính]
Nhiệm vụ 4: Chủ đề [Chủ đề ứng dụng JavaFX, 5, chính]

Thay đổi hàm someAction() và ScheduleTask() thành như thế này:

khoảng trống công khai someAction() {
for(int i = 0; i < 5; i++) {
lịchTask(i);
}
}

lịch trình voidTask(int i) {
Kiểm tra có thể chạy được = () -> {
System.out.println("Nhiệm vụ " + i + ": " + Thread.currentThread());
};
time.addListener((obs, oldV, newV) -> {
thực thi.execute(kiểm tra);
});
}

sẽ tạo ra kết quả sau:

Nhiệm vụ 0: Chủ đề [Chủ đề-16, 5, chính]
Nhiệm vụ 1: Chủ đề [Chủ đề-17, 5, chính]
Nhiệm vụ 2: Chủ đề [Chủ đề-20, 5, chính]
Nhiệm vụ 3: Chủ đề [Chủ đề-19, 5, chính]
Nhiệm vụ 4: Chủ đề [Chủ đề-18, 5, chính]

Về java - người nghe và chủ đề, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/53874525/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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