En tant que langage largement utilisé dans le domaine du développement logiciel, Java possède de puissantes capacités de programmation simultanée. Le cœur de la mise en œuvre de la programmation simultanée consiste à mettre en œuvre des opérations multithread via la technologie sous-jacente de Java. Cet article analysera brièvement comment la technologie sous-jacente de Java implémente la programmation simultanée et fournira des exemples de code spécifiques.
En Java, il existe de nombreuses façons d'implémenter la programmation simultanée, la plus courante et la plus basique étant d'utiliser des threads (Thread) et des verrous (Lock). Grâce aux threads, nous pouvons effectuer plusieurs tâches en même temps, améliorant ainsi l'efficacité d'exécution du programme. Les verrous sont utilisés pour garantir des opérations mutuellement exclusives entre plusieurs threads et éviter les conflits de ressources.
Tout d’abord, voyons comment utiliser les threads pour implémenter la programmation simultanée. En Java, nous pouvons créer des threads en héritant de la classe Thread ou en implémentant l'interface Runnable. Les exemples de code spécifiques sont les suivants :
// 继承Thread类 public class MyThread extends Thread { @Override public void run() { // 线程执行的代码 System.out.println("线程运行中..."); } } // 实现Runnable接口 public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 System.out.println("线程运行中..."); } } // 使用线程 public class Main { public static void main(String[] args) { // 继承Thread类 MyThread thread1 = new MyThread(); thread1.start(); // 实现Runnable接口 MyRunnable runnable = new MyRunnable(); Thread thread2 = new Thread(runnable); thread2.start(); } }
Dans le code ci-dessus, nous créons deux threads, l'un est créé en héritant de la classe Thread et l'autre est créé en implémentant l'interface Runnable. Dans la méthode run() du thread, nous pouvons définir le code spécifique à exécuter par le thread. Après avoir démarré un thread à l’aide de la méthode start(), le thread exécutera le code dans son propre espace d’exécution indépendant.
Voyons ensuite comment utiliser les verrous pour implémenter des opérations d'exclusion mutuelle entre plusieurs threads. En Java, nous pouvons utiliser le mot-clé synchronisé ou l'interface Lock pour implémenter la fonction de verrouillage. Les exemples de code spécifiques sont les suivants :
// 使用synchronized关键字 public class Counter { private int count = 0; public synchronized void increment() { count++; } public synchronized int getCount() { return count; } } // 使用Lock接口 public class Counter { private int count = 0; private Lock lock = new ReentrantLock(); public void increment() { lock.lock(); try { count++; } finally { lock.unlock(); } } public int getCount() { lock.lock(); try { return count; } finally { lock.unlock(); } } } // 使用锁 public class Main { public static void main(String[] args) { Counter counter = new Counter(); for (int i = 0; i < 10; i++) { Thread thread = new Thread(() -> { for (int j = 0; j < 1000; j++) { counter.increment(); } }); thread.start(); } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Count: " + counter.getCount()); } }
Dans le code ci-dessus, nous utilisons deux méthodes pour implémenter la fonction de verrouillage : le mot-clé synchronisé et l'interface de verrouillage. Qu'ils utilisent le mot-clé synchronisé ou l'interface Lock, ils peuvent garantir des opérations mutuellement exclusives entre plusieurs threads. Dans l'exemple de code, nous créons une classe Counter pour compter et utiliser des verrous pour implémenter incr
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!