Multithread-Programmierung kann in Java durchgeführt werden, und in der Java-Standardbibliothek wird eine Thread-Klasse zur Darstellung von Thread-Operationen bereitgestellt. Die Thread-Klasse kann als eine Reihe von APIs betrachtet werden, die von der Java-Standardbibliothek bereitgestellt werden, um Multithread-Programmierung zu lösen.
Die erstellte Thread-Instanz entspricht eins zu eins den Threads im Betriebssystem. Das Betriebssystem stellt eine API (C-Sprachstil) für Threads bereit, und Java kapselt sie in die Thread-Klasse. #🎜🎜 ## 🎜🎜#Thread erstellen#🎜🎜 ## 🎜🎜##Methode 1: Erben von Thread -Klasse
class MyThread extends Thread{ @Override public void run() { //此时只是定义处理一个线程类,在系统中总是还没有创建出 新的线程。 System.out.println("hello thread"); } } public class TestDemo11 { public static void main(String[] args) { //创建线程 Thread t = new MyThread(); //启动线程,在系统中创建出了新的线程 t.start(); } }#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜#Thread Es gibt gleichzeitige Ausführungen Blockierungszustand, welcher Thread sollte dann in der nächsten Sekunde aktiviert werden? Wir können sehen, dass die Reihenfolge der in den beiden ausgeführten Threads gedruckten Protokolle unsicher ist. In jeder Runde ist nach 1 Sekunde ungewiss, ob der Thread-Thread oder der Haupt-Thread aktiviert werden soll. (Präventive Ausführung), für das Betriebssystem ist die Reihenfolge, in der Threads geplant werden, makroskopisch zufällig
Hier erklären wir die Thread.sleep()-Methode, sleep() Diese Methode ist auf ms-Ebene nicht so genau. Nach dem Aufruf dieser Methode wird der Thread gezwungen, sich in einem mittleren Blockierungszustand (Ruhezustand) zu befinden, aber wenn die Blockierungszeit abgelaufen ist, wird der Thread nicht sofort weiter auf dem Cup ausgeführt. Wenn Thread.sleep(1000), nach 1 Sekunde vergeht, endet die Blockierungszeit, aber bei 1001 ms wird der Thread möglicherweise nicht sofort ausgeführt. Möglicherweise ist der Cup im Betriebssystem mit anderen Threads beschäftigt. Möglicherweise wird der Thread bei 1006 ms ausgeführt.
Methode 2: Implementieren Sie die run()-Methode in der Runnable-Schnittstelle class MyThread3 extends Thread{
@Override
public void run() { //定义一个线程类
while (true) {
System.out.println("hello thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class TestDemo13 {
public static void main(String[] args) {
Thread t = new MyThread3();
t.start();//启动t线程
while(true){
System.out.println("hello main");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Methode 3: Verwenden Sie interne Klassen
#🎜 🎜 #Methode drei ist eigentlich eine Nachbildung von Methode eins, bei der die beiden oben genannten Codes in anonyme interne Klassen umgewandelt werden.
//Runnable其实就是描述一个任务 //创建一个类,实现Runnable接口,重写Runnable类中的run方法,在run()方法中,描述的是该线程要指向的哪些任务。 class MyThread2 implements Runnable{ @Override public void run() { System.out.println("hello thread"); } } public class TestDemo12 { public static void main(String[] args) { //创建线程,把创建好的Runnable实例传给Thread实例 Thread t = new Thread(new MyThread2()); t.start(); } }
Methode 4: Lambmd-Ausdruck verwenden1s当执行一个线程中的代码之后
public class TestDemo14 { public static void main(String[] args) { Thread t1 = new MyThread(){ @Override public void run() { System.out.println("hello thread1"); } }; Thread t2 = new Thread(new Runnable() { @Override public void run() { System.out.println("hello thread2"); } }); t1.start(); t2.start(); } }Vorteile der Verwendung von Threads
# 🎜 🎜#Um die Vorteile von Multithreading besser darzustellen, beginnen wir hier bei 0 und erhöhen den Wert um 1, bis er 10_0000_0000 erreicht. Wir verwenden die serielle Methode und die parallele Methode und ermitteln die Zeit, in der sie den Code zum Vergleich ausführen .
public class TestDemo15 { public static void main(String[] args) { //其实就是使用lambad表达式代替Runnable Thread t1 = new Thread(()->{ //()表示无参的run()方法 System.out.println("hello thread1"); }); } }
Wir können deutlich erkennen, dass die serielle Zeit viel länger ist als die parallele Zeit, und die serielle Zeit ist fast doppelt so groß wie die parallele Zeit.
Andere Eigenschaften und Methoden der Thread-KlasseGemeinsame Konstruktionsmethoden von Thread
# 🎜 🎜#
AttributeGetId() # 🎜🎜#Name
getName()
Status# 🎜. 🎜#getState()
PrioritygetPriority()isDaemon() | |
---|---|
isAlive()#🎜🎜 ##🎜 🎜# | Ist der Thread unterbrochen? |
Das obige ist der detaillierte Inhalt vonWie verwendet man die Thread-Klasse in Java und welche Eigenschaften hat sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!