OnJava8-Examples/lowlevel/SyncObject.java

42 lines
824 B
Java
Raw Normal View History

2016-12-07 10:34:41 -08:00
// lowlevel/SyncObject.java
2016-12-30 17:23:13 -08:00
// (c)2017 MindView LLC: see Copyright.txt
2015-11-15 15:51:35 -08:00
// We make no guarantees that this code is fit for any purpose.
2016-09-23 13:23:35 -06:00
// Visit http://OnJava8.com for more book information.
2016-01-25 18:05:55 -08:00
// Synchronizing on another object
2017-01-12 16:49:36 -08:00
import java.util.concurrent.*;
2017-01-12 11:15:03 -08:00
import onjava.Nap;
2015-06-15 17:47:35 -07:00
class DualSynch {
public synchronized void f() {
2017-01-12 16:49:36 -08:00
for(int i = 0; i < 5; i++)
System.out.println("f() " + i);
2015-06-15 17:47:35 -07:00
}
2017-01-12 16:49:36 -08:00
private Object syncObject = new Object();
2015-06-15 17:47:35 -07:00
public void g() {
synchronized(syncObject) {
2017-01-12 16:49:36 -08:00
for(int i = 0; i < 5; i++)
System.out.println("g() " + i);
2015-06-15 17:47:35 -07:00
}
}
}
public class SyncObject {
public static void main(String[] args) {
2017-01-12 16:49:36 -08:00
DualSynch ds = new DualSynch();
CompletableFuture.runAsync(() -> ds.f());
2015-06-15 17:47:35 -07:00
ds.g();
}
2015-09-07 11:44:36 -06:00
}
/* Output:
2017-01-12 16:49:36 -08:00
g() 0
g() 1
f() 0
g() 2
f() 1
g() 3
f() 2
g() 4
f() 3
f() 4
2015-09-07 11:44:36 -06:00
*/