Verrouillage des threads Java
Utilisez le mot-clé synchronisé dans les threads Java pour réaliser la synchronisation
synchronisé peut verrouiller les méthodes, verrouiller les classes, verrouiller les objets et verrouiller les blocs de code
Verrouillage de méthode
// 加在方法上面的同步锁是this public synchronized void print() { System.out.println("同步方法"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } }
Verrouillage de classe
public synchronized void print(String msg) { // 类锁 synchronized (MyThread.class) { System.out.println(msg); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }
Verrouillage d'objet
à vendre Prendre des billets de train à titre d'exemple
public class Window extends Thread { public Window(String name) { super(name); } static int tick = 100; static String obj = new String(); @Override public void run() { // 开始卖票 while (tick > 0) { // 同步代码块 // 一把锁 钥匙 // 所有的线程 必须在这里排队 synchronized (obj) { if (tick > 0) { System.out.println(getName() + "卖出了第【" + tick + "】张票");// 失去了cpu资源 tick--; } } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !
Pour des introductions plus détaillées aux verrous de thread Java et des exemples d'articles liés au code, veuillez prêter attention au site Web PHP chinois !