Ho appena iniziato la programmazione con Java in caso di thread Linux, so che il kernel li programma (poiché sono le entità unità pianificate) ma i programmi java vengono eseguiti su JVM che nel mio sistema (RHEL 6.1) è implementato come un programma che viene eseguito come un'istanza di spazio utente. Quindi, senza che il kernel sia a conoscenza dei thread Java, come mai il multitasking preemptive viene eseguito in JVM? sarà utile se l'intero meccanismo di interazione JVM e kernel nel fare questa cosa è dato Permesso del PLZ citare le possibili fonti di informazioniCome sono programmati i thread java?
risposta
Leggi Distinguish Java threads and OS threads? Come ho detto nelle discussioni commento Java sono normali discussioni OS solo in esecuzione il codice JVM
sì, ma capisco come l'interpretazione del codice Java da parte dell'interprete JVM è fatta in questo ambiente multithreading – Tanay
Tranne che per le azioni di sincronizzazione ogni thread interpreta il codice Java in modo indipendente come se fosse l'unico thread Quando viene creato un nuovo thread, viene detto cosa deve interpretare il codice java. –
jvm è solo un processo normale che inizia con un thread e può generare tutti i thread che gli piacciono in seguito. La pianificazione viene eseguita su due livelli: tra i processi e tra i thread all'interno dei processi. Tutto questo è fatto dal sistema operativo (tramite libs) - il jvm si aggancia. Discussioni di Google posix per maggiori dettagli - ecco cosa viene esposto (API) alla jvm.
Questo va un po 'nei dettagli: http://www.ibm.com/developerworks/java/library/j-rtj3/
discussioni nelle mappe java/processo JVM ad una discussione nativa e si può vedere sia l'ID Java e l'ID nativo in una discarica stack trace thread. Prendi il thread stack di tutti i thread Java utilizzando il tuo strumento preferito:
- comando segnale di linea, come Ctrl + pausa (Windows) o Ctrl + \ linux) nella console dove il programma Java è in esecuzione
- strumento a riga di comando (uccidere -quit o jstack dal JDK)
- vm visiva nel JDK e/o JMX ecc
Esempio estratto dalla prima riga di un tale discarica filo: ... tid = 0x0000002adaba9c00 nid = 0x754c ...
tid = filo java id
nid = id nativo (solo l'ID OS)
Utilizzare gli strumenti del sistema operativo per saperne di più il filo con l'id nativo (si è in esadecimale).
All'interno del codice Java devi ThreadMXBean per recuperare ulteriori informazioni filo programatically se si vuole http://docs.oracle.com/javase/6/docs/api/java/lang/management/ThreadMXBean.html
", ma i programmi Java vengono eseguiti su JVM, che nel mio sistema (RHEL 6.1) è attuato come un programma che viene eseguito come uno spazio utente instance.So, senza il nocciolo essere consapevoli dei fili java ..."
Questa affermazione non è corretta per tutte le moderne JVM che utilizzano thread nativi. Penso che sia stato il default da Java 1.2. L'implementazione di un thread nativo da una JVM significa che ogni volta che un thread crea un'istanza/una thread in codice Java, la JVM chiede al sistema operativo di creare il thread. Poiché questi sono thread nativi, il kernel li conosce e li tratta di conseguenza.Inoltre, Linux supporta/implementa i thread POSIX, e come tale su un sistema basato su Linux si ottiene un comportamento pthread per i thread delle proprie applicazioni Java
- 1. Come sono programmati i logaritmi?
- 2. Cosa sono i thread (cos'è un thread)?
- 3. I 32 thread da 32 blocchi saranno programmati come un ordito?
- 4. Quanto sono costosi i dump di thread Java (Solr)?
- 5. I parametri del metodo sono thread-safe in Java?
- 6. I thread di Java o C# sono basati su thread User-Space o thread Kernel-Space?
- 7. I generatori sono thread-safe?
- 8. I thread di inizializzazione statici Java sono sicuri?
- 9. Come conoscere i thread, specialmente in Java
- 10. Monitoraggio thread Java. Come scoprire i thread live non daemon?
- 11. Come pianificare thread Java
- 12. I metodi IEnumerable Linq sono thread-safe?
- 13. I thread client proxy CXF sono sicuri?
- 14. I contenitori Python incorporati sono thread-safe?
- 15. Quali risorse sono condivise tra i thread?
- 16. I thread sono eseguiti su più processori?
- 17. I metodi statici sono thread-safe
- 18. Ottenimento dell'ID thread per i thread Java in Linux
- 19. Perché i blocchi sono serializzabili in java?
- 20. Come sono terminati i thread durante un crash di Linux?
- 21. I post programmati tramite Graph API spesso non vengono pubblicati
- 22. Risultati incoerenti con i thread java
- 23. Come interrompere un thread Java?
- 24. Cosa sono quei thread java che iniziano con "pool"?
- 25. ExecutorService, come sapere quando tutti i thread sono finiti senza bloccare il thread principale?
- 26. Come uccidere tutti i thread che non sono il thread principale?
- 27. Come interrompere i thread quando si disimpegna un'applicazione Java EE?
- 28. Quanto sono pesanti i thread Java rispetto agli attori Scala/Akka?
- 29. Thread verde e thread nativi in java
- 30. Current Thread Method java
Non sicuro, ma ogni thread Java è gestito da un thread del sistema operativo dedicato. Quindi il tuo sistema operativo non ha bisogno di essere a conoscenza di JVM ecc. –