Skip to content

Instantly share code, notes, and snippets.

private long counter = 0;
private final Object mutex = new Object();
public void incrementCounter() {
synchronized (mutex) {
counter++;
}
}
public synchronized void incrementCounter() {
counter++;
}
private AtomicLong counter = new AtomicLong();
public void incrementCounter() {
counter.incrementAndGet();
}
private Object resource = new Object();
public synchronized Object getResource() {
return resource;
}
public synchronized void setResource(Object resource) {
this.resource = resource;
}
private Object resource = new Object();
private AtomicReference<Object> reference = new AtomicReference<Object>(resource);
public Object getResource() {
return reference.get();
}
public void setResource(Object resource) {
reference.set(resource);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("thread 1");
}
};
Thread thread1 = new Thread(runnable);
thread1.start();
Thread thread2 = new Thread() {
@Override
public void run() {
System.out.println("thread 2");
}
};
thread2.start();
ExecutorService executor = Executors.newSingleThreadExecutor();
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
};
executor.execute(runnable);
// executing once again
ExecutorService executor = Executors.newFixedThreadPool(2);
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
};
executor.execute(runnable);
executor.execute(runnable);
public class Resource {
private Object veryImportantObject = new Object();
private final Object mutex = new Object();
public synchronized Object getVeryImportantObject() {
System.out.println("Getting object");
return veryImportantObject;
}