new Thread(new Runnable() {
public void run() {
System.out.println("Look ma, no hands");
}
}).start();
new Thread(new Runnable() {
public void run() {
System.out.println("Look at me, look at me...");
}
}).start();
Làm việc tốt ...
Tôi muốn sử dụng một ExecutorService cá nhân.
CẬP NHẬT với ExecutorService dụ
Vì vậy, tôi đã viết ví dụ này thực sự nhanh chóng ...
Về cơ bản nó sử dụng một ExecutorService
để chạy một vài nhiệm vụ đơn giản. Khi đứng, cả hai nhiệm vụ sẽ chạy song song với nhau (cùng một lúc)
public static void main(String[] args) throws InterruptedException {
ExecutorService service = Executors.newFixedThreadPool(2);
service.submit(new PathScanner());
service.submit(new Counter());
service.shutdown();
service.awaitTermination(1, TimeUnit.DAYS);
System.exit(0);
}
public static class PathScanner implements Callable<Object> {
@Override
public Object call() throws Exception {
scan(new File("C:/"), 0);
return null;
}
protected void scan(File path, int deepth) {
if (deepth < 15) {
System.out.println("Scanning " + path + " at a deepth of " + deepth);
File[] files = path.listFiles();
for (File file : files) {
if (file.isDirectory()) {
scan(file, ++deepth);
}
}
}
}
}
public static class Counter implements Callable<Object> {
@Override
public Object call() throws Exception {
for (int index = 0; index < 1000; index++) {
Thread.sleep(1);
System.out.println(index);
}
return null;
}
}
Run nó ...
Bây giờ thay đổi ExecutorService service = Executors.newFixedThreadPool(2);
-ExecutorService service = Executors.newFixedThreadPool(1);
và chạy nó một lần nữa. Bạn có thấy sự khác biệt không?
Đây là cách để kiểm soát số lượng các chuỗi đồng thời mà người thực thi có thể sử dụng trong khi xử lý hàng đợi của nó.
Tạo thêm một số tác vụ và thêm chúng vào hàng đợi và xem những gì bạn nhận được.
* nó ném ngoại lệ * có thể hữu ích khi đăng ngoại lệ tại đây – Robin
Các tác vụ có liên quan không? Tức là bạn muốn gửi thông báo SAU KHI dữ liệu đã được lưu? Hay bạn chỉ muốn xếp hàng một loạt các nhiệm vụ ngẫu nhiên vào hàng đợi ??? – MadProgrammer
@MadProgrammer cảm ơn bạn đã trả lời nhanh chóng.cơ sở dữ liệu cả hai nhiệm vụ độc lập với nhau. do đó, nó không quan trọng nếu dữ liệu được lưu đầu tiên hoặc thông báo đẩy được gửi đầu tiên –