2012-09-23 27 views
18

Tôi muốn sinh ra một chuỗi Java từ chương trình java chính của tôi và chuỗi đó nên thực thi riêng mà không can thiệp vào chương trình chính. Sau đây là cách nó nên là:Tạo chủ đề trong java để chạy ở chế độ nền

  1. chương trình chính bắt đầu bởi người sử dụng
  2. Hiện một số công việc kinh doanh và nên tạo một chủ đề mới mà có thể xử lý các tiến trình nền
  3. Ngay sau khi các chủ đề được tạo ra, chương trình chính không nên đợi cho đến khi luồng được sinh ra hoàn thành. Trong thực tế nó sẽ liền mạch ..
  4. cách
+1

thể trùng lặp của [Chủ đề trong Java] (http://stackoverflow.com/question/2865315/threads-in-java) –

+2

Bạn đã xem [Java Tutorials Concurrency section] (http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html) chưa? – Keppil

Trả lời

55

Một thẳng về phía trước là để tự đẻ trứng thread mình:

public static void main(String[] args) { 

    Runnable r = new Runnable() { 
     public void run() { 
      runYourBackgroundTaskHere(); 
     } 
    }; 

    new Thread(r).start(); 
    //this line will execute immediately, not waiting for your task to complete 
} 

Ngoài ra, nếu bạn cần phải đẻ trứng nhiều hơn một thread hoặc cần phải làm điều đó nhiều lần, bạn có thể sử dụng API đồng thời cấp cao hơn và dịch vụ thực thi:

public static void main(String[] args) { 

    Runnable r = new Runnable() { 
     public void run() { 
      runYourBackgroundTaskHere(); 
     } 
    }; 

    ExecutorService executor = Executors.newCachedThreadPool(); 
    executor.submit(r); 
    //this line will execute immediately, not waiting for your task to complete 
} 
+1

Cảm ơn bạn assylias .. !! Tôi hết tâm trí, kết quả là những câu hỏi rất cơ bản này. Nhưng mã của bạn đã giúp tôi! Cảm ơn bạn.! – Sirish

+0

Rất Rất Rất cảm ơn bạn! – Paolo

+0

Khi tôi nhìn vào quá trình xử lý nền nhiệm vụ hệ thống không hiển thị ..... những gì về điều này ... Xin vui lòng thả một dòng chỉ để giúp –

5

Đây là một cách khác để tạo chuỗi bằng lớp bên trong ẩn danh.

public class AnonThread { 
     public static void main(String[] args) { 
      System.out.println("Main thread"); 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
       System.out.println("Inner Thread"); 
       } 
      }).start(); 
     } 
    } 
3

Và nếu bạn muốn làm điều đó một cách Java 8, bạn có thể làm điều đó đơn giản như này:

public class Java8Thread { 

    public static void main(String[] args) { 
     System.out.println("Main thread"); 
     new Thread(this::myBackgroundTask).start(); 
    } 

    private void myBackgroundTask() { 
     System.out.println("Inner Thread"); 
    } 
} 
Các vấn đề liên quan