Maison > Java > Javacommencer > le corps du texte

Comment implémenter le multi-threading en Java

王林
Libérer: 2020-09-30 15:56:35
avant
2043 Les gens l'ont consulté

Comment implémenter le multi-threading en Java

Exigences : Nous souhaitons implémenter un programme multithread

(tutoriel recommandé : cours java)

Comment mettre en œuvre :

Puisque les threads dépendent des processus, nous devons d'abord créer un processus

Le processus est créé par le système, nous devons donc appeler la fonction système pour créer un processus

Cependant, Java ne peut pas appeler directement les fonctions système, nous ne pouvons donc pas implémenter directement des programmes multithread

Cependant, Java peut appeler directement des programmes écrits en C/C++ pour implémenter des programmes multithread <.>

C/C++ appelle des fonctions système pour créer des processus, puis Java appelle des choses comme celle-ci

et fournit ensuite quelques classes que nous pouvons utiliser. On peut implémenter le multi-threading

Alors quelles sont les classes fournies par Java ?

Thread

En regardant l'API, nous savons qu'il existe deux façons d'implémenter le multi-threading

Méthode 1 : hériter de la classe Thread

Étapes :

A : La classe personnalisée MyThread hérite de la classe Thread

B : La méthode run() est remplacée dans la classe MyThread

Pourquoi la méthode run() ; ?

Tous les codes d'un type n'ont pas besoin d'être exécutés par des threads

À l'heure actuelle, afin de distinguer les codes qui peuvent être exécutés par plusieurs threads, Java fournit la méthode run() dans la classe Thread

Utilisée pour inclure le code exécuté par le thread

C : Créer un objet

D : Démarrer le thread

Exemple :

package cn.itcast_01;
public class 如何实现多线程及其多线程方式1的思路 {
public static void main(String[] args) {
// 创建线程对象
MyThread my = new MyThread();
//启动线程
my.run();
my.run();
//调用run();方法为什么是单线程呢?
//因为run();方法的直接调用其实就相当于普通方法调用,所有你看到的是单线程的效果
//想要看到多线程的效果,就必须说另一个方法:start()
//面试题run()和start()的区别
//run():仅仅是封装被线程执行的代码,直接调用依旧是普通方法
//start():首先启动了线程,然后再由JVM去调用该线程的run()方法
MyThread my = new MyThread();
my.start();
my.start();//IllegalThreadStateException:非法的线程状态异常
//为什么呢?
//因为这是相当于my线程别调用了两次。而不是两个线程的启动
//创建两个线程
MyThread my1 = new MyThread();
MyThread my2 = new MyThread();
my1.start();
my2.start();
}
}
Copier après la connexion

Recommandations associées :

Démarrer avec Java

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal