Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

The solution to the critical Resource problem of Java Multithreading

2025-03-29 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

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)

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report