add maven as package manager
add ShowObjectHeader.java to show object header
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
package jvm;
|
||||
package main.java.jvm;
|
||||
|
||||
/**
|
||||
* This class is intended to demo how jvm create object and invoke constructor. Please see byte code.
|
||||
* This class is intended to demo how main.java.jvm create object and invoke constructor. Please see byte code.
|
||||
* use javap -v ObjectCreate.class or javap -c ObjectCreate.class to see byte code
|
||||
*/
|
||||
public class ObjectCreate {
|
42
src/main/java/jvm/ShowObjectHeader.java
Normal file
42
src/main/java/jvm/ShowObjectHeader.java
Normal file
@ -0,0 +1,42 @@
|
||||
package jvm;
|
||||
|
||||
import org.openjdk.jol.info.ClassLayout;
|
||||
|
||||
public class ShowObjectHeader {
|
||||
|
||||
static final Object lock = new Object();
|
||||
|
||||
public void syncObject() {
|
||||
synchronized (lock) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
System.out.println("enter sync");
|
||||
System.out.println(ClassLayout.parseInstance(lock).toPrintable());
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
ShowObjectHeader showObjectHeader = new ShowObjectHeader();
|
||||
System.out.println("newly created");
|
||||
System.out.println(ClassLayout.parseInstance(lock).toPrintable());
|
||||
|
||||
Thread t1 = new Thread(showObjectHeader::syncObject);
|
||||
t1.start();
|
||||
t1.join();
|
||||
|
||||
Thread t2 = new Thread(showObjectHeader::syncObject);
|
||||
Thread t3 = new Thread(showObjectHeader::syncObject);
|
||||
|
||||
t2.start();
|
||||
t3.start();
|
||||
|
||||
t2.join();
|
||||
t3.join();
|
||||
System.out.println("after sync");
|
||||
System.out.println(ClassLayout.parseInstance(lock).toPrintable());
|
||||
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
public class CreateByAnonymousClass {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.FutureTask;
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.concurrent.*;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.concurrent.FutureTask;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
public class CreateByRunnable implements Runnable{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
public class CreateByThread extends Thread{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
public class CreateByThreadGroup {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package createthread;
|
||||
package main.java.jvm.createthread;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
@ -1,4 +1,4 @@
|
||||
package recursive;
|
||||
package main.java.recursive;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package recursive;
|
||||
package main.java.recursive;
|
||||
|
||||
import java.util.*;
|
||||
|
Reference in New Issue
Block a user