Exemple d'analyse des threads démons et des threads non-démons en Java
Cet article présente principalement le thread démon et le thread non-démon en Java. L'éditeur pense que c'est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil
Récemment, j'ai refait des recherches sur les connaissances de base de Java et j'ai découvert que trop de connaissances avaient été ignorées dans le passé. En comparant le mécanisme de thread de Java, il existe deux types de threads. Java : User Thread (thread utilisateur), Daemon Thread (thread démon), (PS : je l'ai ignoré auparavant).
Les étudiants qui ont étudié le développement Unix mais n'ont pas étudié Java en détail peuvent être confus. Il n'y a pas de soi-disant thread démon dans le système d'exploitation, seulement un processus démon, mais le mécanisme du langage Java est construit sur la JVM. Fondamentalement, cela signifie que la plate-forme Java protège la couche inférieure du système d'exploitation, afin qu'elle puisse construire un mécanisme qui lui est bénéfique dans sa propre plate-forme virtuelle, et que le concepteur du langage ou de la plate-forme est plus ou moins responsable de cela. Influencé par la pensée Unix et que le mécanisme de thread démon est adapté aux plates-formes telles que JVM, les threads démon ont vu le jour.
Le rôle de Daemon est de fournir des services pour l'exécution d'autres threads, tels que les threads GC. En fait, il n'y a essentiellement aucune différence entre les threads User Thread et les threads démon Daemon Thread. La seule différence réside dans le départ de la machine virtuelle : si tous les threads utilisateur évacuent, alors Daemon Thread n'aura aucun thread à servir, donc la machine virtuelle. sort également.
Le thread démon n'est pas fourni dans la machine virtuelle. Les utilisateurs peuvent également définir le thread démon par eux-mêmes. Méthode : public final void setDaemon(boolean on);
1 ), thread.setDaemon(true) doit être défini avant thread.start(), sinon une IllegalThreadStateException sera levée. Vous ne pouvez pas définir un thread normal en cours d’exécution comme thread démon. (Remarque : ce point est évidemment différent du processus démon. Une fois le processus démon créé, il permet au processus de se débarrasser du contrôle de la session d'origine + le processus se débarrasse du contrôle du groupe de processus d'origine + le processus se débarrasse du contrôle du terminal de contrôle d'origine ; il s'appuie donc sur le virtuel. Le mécanisme de langage de la machine est essentiellement différent du langage au niveau du système)2). aussi celui de Daemon. (Il s'agit d'une différence essentielle : le processus enfant qui sort du processus démon fork() n'est plus un processus démon. Bien qu'il copie les informations liées au processus du processus parent, le processus parent du processus enfant n'est pas le processus démon. processus init. , le soi-disant processus démon signifie essentiellement "le processus parent meurt, init l'adopte, puis les fichiers 0, 1, 2 sont tous /dev/null, et le répertoire actuel est /") 3), toutes les applications ne peuvent pas être affectées à des threads démon pour exécuter des services, tels que des opérations de lecture et d'écriture ou une logique de calcul. Parce que la machine virtuelle s'est peut-être fermée avant que Daemon Thread puisse effectuer l'opération. Exemple ://完成文件输出的守护线程任务 import java.io.*; class TestRunnable implements Runnable{ public void run(){ try{ Thread.sleep(1000);//守护线程阻塞1秒后运行 File f=new File("daemon.txt"); FileOutputStream os=new FileOutputStream(f,true); os.write("daemon".getBytes()); } catch(IOException e1){ e1.printStackTrace(); } catch(InterruptedException e2){ e2.printStackTrace(); } } } public class TestDemo2{ public static void main(String[] args) throws InterruptedException { Runnable tr=new TestRunnable(); Thread thread=new Thread(tr); thread.setDaemon(true); //设置守护线程 thread.start(); //开始执行分进程 } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
