Prima di tutto, non c'è cosa come domanda stupida ...
Semaphore permette più thread per "acquisire" una risorsa. Dovrebbero controllare se la risorsa è disponibile. È come una valvola per il controllo del flusso.
A Lock è per l'accesso esclusivo. Solo un thread alla volta.
A ThreadPoolExecutor consente di eseguire codice (classe Runnable o Callable) utilizzando una quantità limitata di thread. Non devi preoccuparti di crearlo da solo, è già implementato per te nell'API di JSE. Potresti fare da te con alcuni semafori e code ... ma se non hai una buona ragione non perdere tempo.
Imaging è necessario implementare un server Web che riceve alcune richieste alla porta 80. Non si desidera utilizzare lo stesso thread che sta ascoltando questa porta per elaborare l'intera richiesta (questo è uno spreco di risorse ...) . È possibile utilizzare un deal ThreadPoolExecutor con la richiesta, elaborarlo e rispondere al client. ThreadPoolExecutor può essere configurato per sfruttare le CPU attuali: numero ottimale di minacce per questa architettura e questa attività.
Concurrency in practice è un bel libro per migliorare le tue conoscenze in materia.
Spero che questo ti aiuti e mi dispiace per il mio inglese di base.
fonte
2013-01-22 10:59:11
Grazie per indicare i documenti java 7. Ho solo cercato su Google e apro il link. – mehta
google è un po 'obsoleto per i collegamenti. Spesso ti dà 1.4.2. –
Ricerca Google: "Java 7 XXX" con XXX = nome della classe funziona il 99% delle volte. Ad esempio: [ricerca di Java 7 Semaphore] (https://www.google.co.uk/search?q=java+7+semaphore). – assylias