I have a java class ,which has two methods .These methods will be called one after the other. These methods are making rest calls to different services. After getting data from rest call ,i'm updating multiple tables and some of the tables will be updated by both methods. My task is to implement multithreading to run both methods simultaneously but avoid threads to override data while they are updating the same table. What are the different ways to do it and how can i do it effectively in java8.
How to avoid thread interference while updating database in multithreading
75 Views Asked by Siva Sai kiran At
2
There are 2 best solutions below
0
Ilam
On
It is better to view this problem from data integrity perspective rather than threads. Because your application could run in a cluster (if not now, maybe later). There could be other users updating same table, from other applications.
The solution depends on the level of contention(the number of threads trying to update the same database table).
If there is high contention, use pessimistic locking. Refer pessimistic locking
If there is low contention, use optimistic locking. Refer optimistic locking
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in MULTITHREADING
- How can I outsource worker processes within a for loop?
- OpenMP & oneTbb difference
- Receiving Notifications for Individual Task Completion OmniThreadLibrary Parallel.ForEach
- C++ error: no matching member function for call to 'enqueue' futures.emplace_back(TP.enqueue(sum_plus_one, x, &M));
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Qt: running callback in the main thread from the worker thread
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Heap sort with multithreading
- windows multithreading CreateMutex
- The problem of "fine-grained locks and two-phase locking algorithm"
- OpenMP multi-threading not working if OpenMPI set to use one or two MPI processor
- WPF Windows Initializing is locking the separated thread in .Net 8
- TCP Client Losing Connection When Writing Data
- vc++ thread constructor throwing compiler error c2672
- ASP.NET Core 6 Web API : best way to pause before resending email
Related Questions in PARALLEL-PROCESSING
- How to calculate Matrix exponential with Tailor series PARALLEL using MPI c++
- Efficiently processing many small elements of a collection concurrently in Java
- Parallelize filling of Eigen Matrix in C++
- Memory efficient parallel repeated rarefaction with subsequent matrix addition of large data set
- How to publish messages to RabbitMQ by using Multi threading?
- Running a C++ Program with CMake, MPI and OpenCV
- Alternative approach to io.ReadAll to store memory consumption and send a PUT Request with valid data
- Parallelize nested loop with running sum in Fortran
- Can I use parfor within a parfeval in Matlab R2019b and if yes how?
- Parallel testing with cucumber, selenium and junit 5
- Parallel.ForEach vs ActionBlock
- Passing variable to foreach-object -parallel which is with in start-job
- dbatools SQL Functions Not Running In Parallel While SQL Server queries do in Powershell
- How do I run multiple instances of my Powershell function in parallel?
- Joblib.parallel vs concurrent.futures
Related Questions in SYNCHRONIZATION
- I need assistance with scripting between tabs for Google Sheets
- Transfer SQLite Database via USB-Cable
- How to avoid re-syncing entire tables between microservice databases upon schema changes?
- Qualcomm Diag frame Time synchronization in Quectel EC25
- Parallel programming: Synchronizing processes
- Passing arguments to OpenCL kernel, before execution finished
- Context Cancels not triggering on a blocking Stream.Recv() in Go gRPC Bi-Directional Stream
- How can I proactively close a synchronous tungstenite websocket connection?
- Weird race-condition in java ThreadPoolExecutor
- How to make Offline database with online synchronization in android app using JAVA. Plesae suggest me code or any related tutorial
- Critical section control with atomics
- stm32 FreeRTOS Interrupt cannot run smooth as i think
- How can I change MongoDB Sync Driver Logging level to SEVERE using PaperMC?
- Strange output in a synchronization problem using binary semaphores in C
- How to ensure consistency in process synchronization
Related Questions in DATA-CONSISTENCY
- How to build a tightly consistent item assortment table with pagination, sort, filter and search?
- Handling inconsistency in a highly normalized DB with long load times
- How to compute MD5 on the http server while providing file download
- How to check data integrity/consistency in asynchronous (event-driven) system
- How to avoid thread interference while updating database in multithreading
- DolphinDB - Verify data consistency during database migration
- How to manage Data consistency between two microservices?
- Spring Data: How to maintain cache consistency in transactional methods?
- The relationship between Paxos family and data consistency
- Data consistency in DAOs
- Data Consistency check in ADF Copy activity with Source as Query on Teradata Table and Sink as CSV in Azure Blob
- Flutter List after storing all data in a for-loop, when out of loop replace all stored records with the last record. Why's that?
- Data consistency around instances of same micro service
- How to share data between microservices without sync RPC (use topics as changelogs) and deal with consistency?
- How to ensure DNS records consistency between primary DNS servers?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
To avoid race condition, you should wait for both thread collect all data from 2 rest calls then do the database modification, like example:
For database synchronization, you can use optimistic lock to prevent multiple update. Optimistic lock simple is version of your record and the query look like:
Only one thread can execute successful this query due to database ACID. If you use Hibernate for persistence layer, you can looking for Hibernate Versioning