Junior — Middle
Can you tell about your experience working with concurrency mechanisms in programming?
sobes.tech AI
Answer from AI
In my experience working with Java, I have used various concurrency mechanisms to ensure the correct operation of multithreaded applications. The main ones include:
- Synchronization (
synchronized): to protect critical sections of code from simultaneous access by multiple threads. - Classes from the
java.util.concurrentpackage: such asReentrantLock,Semaphore,CountDownLatch, which provide more flexible and powerful thread management tools. - Concurrent Collections: for example,
ConcurrentHashMapfor thread-safe collection operations. - Executor Framework: for managing thread pools and asynchronous task execution.
Example of using ReentrantLock:
import java.util.concurrent.locks.ReentrantLock;
public class Counter {
private int count = 0;
private final ReentrantLock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
public int getCount() {
return count;
}
}
This approach helps avoid race conditions and ensures data correctness during parallel access.