The solution to the critical Resource problem of Java Multithreading
Java multithreading critical resource problem solution, many novices are not very clear about this, in order to help you solve this problem, the following editor will explain in detail for you, people with this need can come to learn, I hope you can gain something.
The cause of the critical resource problem: when a thread accesses the critical resource, before it has time to completely modify the value of the critical resource, the critical resource is accessed by other threads, resulting in multiple threads accessing the same resource. The intuitive performance is that the printing results are out of order.
Solution: add a lock
Class locks are used in static methods and object locks are used in non-static methods.
1. Synchronous code snippet: synchronized () {...}
two。 Synchronization method: a method modified with the keyword synchronized
3. Use an explicit synchronization lock ReentrantLock
The lock pool describes the state of waiting outside the lock.
Method 1: synchronize code snippets: synchronized () {...}
Public class SourceConflict {public static void main (String [] args) {/ / instantiate 4 conductors, simulate 4 conductors with 4 threads Runnable r = ()-> {while (TicketCenter.restCount > 0) {synchronized ("") {if (TicketCenter.restCount {while (TicketCenter.restCount > 0) {sellTicket ();}}; / / simulate 4 conductors Thread thread1 = new Thread (r, "thread-1") with 4 threads Thread thread2 = new Thread (r, "thread-2"); Thread thread3 = new Thread (r, "thread-3"); Thread thread4 = new Thread (r, "thread-4"); / / start thread thread1.start (); thread2.start (); thread3.start (); thread4.start ();} private synchronized static void sellTicket () {if (TicketCenter.restCount {while (TicketCenter.restCount > 0) {lock.lock (); if (TicketCenter.restCount)