Ciao a tutti,

vorrei aiuto per comprendere il seguente codice che ho sotto mano (preso da fonti web sulla libreria bluecove):

codice:
public class RemoteDeviceDiscovery {
   public static final Vector/*<RemoteDevice>*/ devicesDiscovered = new Vector();
   public static void main(String[] args) throws IOException, InterruptedException {
      [....];
      synchronized(inquiryCompletedEvent) {
         boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
         if (started) {
            System.out.println("wait for device inquiry to complete...");
            inquiryCompletedEvent.wait();
            System.out.println(devicesDiscovered.size() +  " device(s) found");
         }
      }
   }
}
Mi pare come se dentro il main fosse definito un altro *metodo* (quello synchronized). Inoltre nel main ci sono altre istruzioni prima di questo *metodo*, le ho omesse perchè sono ininfluenti dato che se si lancia in esecuzione la classe parte il *metodo*. Come funziona di preciso?

Grazie in anticipo

Pete