2013-04-10 36 views
24

Một ví dụ được lấy từ một Jetty hướng dẫn nhúng gợi ý như sau:Embedded Jetty tại sao phải sử dụng tham gia

public static void main(String[] args) throws Exception 
{ 
    Server server = new Server(8080); 
    server.setHandler(new HelloHandler()); 

    server.start(); 
    server.join();} 

Tại sao tôi cần phải thêm dòng server.join()? Nó hoạt động tốt mà không có nó.

Trả lời

-2

join() đang chặn cho đến khi máy chủ sẵn sàng. Nó hoạt động như Thread.join() và thực sự gọi join() của hồ bơi thread của Jetty. Mọi thứ đều hoạt động mà không có điều này vì cầu tàu bắt đầu rất nhanh. Tuy nhiên, nếu đơn đăng ký của bạn đủ nặng thì thời gian bắt đầu có thể mất chút thời gian. Gọi số join() đảm bảo rằng sau khi máy chủ thực sự sẵn sàng.

+0

Nó không phải là thực sự nhanh chóng, phải mất 1/3 của một phút để tải một máy chủ, vẫn không thấy cách tham gia sẽ giúp tôi. –

+17

'Server.join()' đợi máy chủ dừng hoàn toàn, không có ví dụ trong câu hỏi sẽ bắt đầu và 'main()' sẽ thoát ra khiến JVM tắt máy. –

+6

'Server.start()' sẽ trở lại khi vòng đời chính của máy chủ đã hoàn thành nó khởi động. Trong đó bao gồm tất cả các thành phần bạn chỉ định và đính kèm vào Server trước khi gọi đến 'Server.start()'. Tuy nhiên, lưu ý rằng một số thành phần, chẳng hạn như DeploymentManager (mà câu hỏi không sử dụng) có chủ đề riêng của chúng mà không được coi là sự tổng quát hóa này. Ví dụ, thực hành tốt là yêu cầu các Trình kết nối cho trạng thái của chúng sau 'Server.start()' và trước 'Server.join()' –

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