add maven as package manager

add ShowObjectHeader.java to show object header
This commit is contained in:
2025-02-19 13:21:49 +08:00
parent 103b75b80b
commit 2a2707c4e7
20 changed files with 146 additions and 19 deletions

View File

@ -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 {

View 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());
}
}

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
public class CreateByAnonymousClass {

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.concurrent.*;

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.Arrays;
import java.util.List;

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.concurrent.FutureTask;

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
public class CreateByRunnable implements Runnable{
@Override

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
public class CreateByThread extends Thread{
@Override

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
public class CreateByThreadGroup {

View File

@ -1,4 +1,4 @@
package createthread;
package main.java.jvm.createthread;
import java.util.Timer;
import java.util.TimerTask;

View File

@ -1,4 +1,4 @@
package recursive;
package main.java.recursive;
import java.util.ArrayList;
import java.util.List;

View File

@ -1,4 +1,4 @@
package recursive;
package main.java.recursive;
import java.util.*;