(1) Es ist schwierig, die Aktualität sicherzustellen.
(2) Es ist schwierig, den Overhead zu reduzieren. Wenn die Ruhezeit verkürzt wird, beispielsweise 1 Millisekunde lang schläft, können Verbraucher Änderungen in den Bedingungen schneller erkennen, es werden jedoch möglicherweise mehr Prozessorressourcen beansprucht, was zu unnötiger Verschwendung führt.
Einführung
Methode 1
Bedingung erschien nur in Java 1.5. Sie wird verwendet, um die herkömmlichen Funktionen „wait()“ und „notify()“ von Object zu ersetzen. Um eine Zusammenarbeit zwischen Threads zu erreichen, ist die Verwendung im Vergleich zur Verwendung von „wait()“ und „notify()“ von Object sicherer und effizienter Die Methoden „await()“ und „signal()“ von Condition1 ermöglichen die Zusammenarbeit zwischen Threads. Bedingung ist im Grunde eine Schnittstelle Eine Bedingung ist lock.newCondition()
Rufen Sie die Methoden „await()“ und „signal()“ von Condition auf. Beide sind innerhalb des Sperrschutzes erforderlich, das heißt, sie müssen zwischen lock.lock() und verwendet werden lock.unlock
Beispiel
public class Test { public static Object object = new Object(); public static void main(String[] args) { Thread1 thread1 = new Thread1(); Thread2 thread2 = new Thread2(); thread1.start(); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } thread2.start(); } static class Thread1 extends Thread{ @Override public void run() { synchronized (object) { try { object.wait(); } catch (InterruptedException e) { } System.out.println("线程"+Thread.currentThread().getName()+"获取到了锁"); } } } static class Thread2 extends Thread{ @Override public void run() { synchronized (object) { object.notify(); System.out.println("线程"+Thread.currentThread().getName()+"调用了object.notify()"); } System.out.println("线程"+Thread.currentThread().getName()+"释放了锁"); } } }
Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es für die Zusammenarbeit von Java-Threads?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!