Get the App
SLTechnology News&Howtos  ›  Development  › 

The solution to the critical Resource problem of Java Multithreading

Shulou Source: shulou.com Published: 2022-06-03 05:06:26 10月05日 Update

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)

Tags: Thread method ticket seller conductor resource synchronization instance static remaining problem usage code keyword variable help clear chaotic intuitive content Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Apple NVidia Linux Redmi Shulou Tech Info