From 2a2707c4e79936e264b1f863e5d0056e05131c6f Mon Sep 17 00:00:00 2001 From: Jason Lu Date: Wed, 19 Feb 2025 13:21:49 +0800 Subject: [PATCH] add maven as package manager add ShowObjectHeader.java to show object header --- .idea/compiler.xml | 14 +++++++ .idea/inspectionProfiles/Project_Default.xml | 8 ++++ .idea/jarRepositories.xml | 20 +++++++++ .idea/misc.xml | 8 ++++ java_test.iml | 7 +--- pom.xml | 38 +++++++++++++++++ src/{ => main/java}/jvm/ObjectCreate.java | 4 +- src/main/java/jvm/ShowObjectHeader.java | 42 +++++++++++++++++++ .../createthread/CreateByAnonymousClass.java | 2 +- .../jvm}/createthread/CreateByCallable.java | 2 +- .../CreateByCompletableFuture.java | 2 +- .../createthread/CreateByExecutorService.java | 2 +- .../jvm}/createthread/CreateByForkJoin.java | 2 +- .../jvm}/createthread/CreateByFutureTask.java | 2 +- .../jvm}/createthread/CreateByRunnable.java | 2 +- .../jvm}/createthread/CreateByThread.java | 2 +- .../createthread/CreateByThreadGroup.java | 2 +- .../java/jvm}/createthread/CreateByTimer.java | 2 +- src/{ => main/java}/recursive/TreeNode.java | 2 +- .../java}/recursive/TreeStructure.java | 2 +- 20 files changed, 146 insertions(+), 19 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 pom.xml rename src/{ => main/java}/jvm/ObjectCreate.java (79%) create mode 100644 src/main/java/jvm/ShowObjectHeader.java rename src/{ => main/java/jvm}/createthread/CreateByAnonymousClass.java (91%) rename src/{ => main/java/jvm}/createthread/CreateByCallable.java (94%) rename src/{ => main/java/jvm}/createthread/CreateByCompletableFuture.java (96%) rename src/{ => main/java/jvm}/createthread/CreateByExecutorService.java (94%) rename src/{ => main/java/jvm}/createthread/CreateByForkJoin.java (92%) rename src/{ => main/java/jvm}/createthread/CreateByFutureTask.java (91%) rename src/{ => main/java/jvm}/createthread/CreateByRunnable.java (90%) rename src/{ => main/java/jvm}/createthread/CreateByThread.java (89%) rename src/{ => main/java/jvm}/createthread/CreateByThreadGroup.java (93%) rename src/{ => main/java/jvm}/createthread/CreateByTimer.java (91%) rename src/{ => main/java}/recursive/TreeNode.java (96%) rename src/{ => main/java}/recursive/TreeStructure.java (97%) diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..4fc82c1 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..db0f74e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..b074d70 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 6f29fee..fdc35ea 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,13 @@ + + + + diff --git a/java_test.iml b/java_test.iml index c90834f..a80f8af 100644 --- a/java_test.iml +++ b/java_test.iml @@ -1,11 +1,8 @@ - - - + + - - \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..23124b4 --- /dev/null +++ b/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.kuaslab + java-learning + 1.0-SNAPSHOT + + + 21 + 21 + + + + + org.openjdk.jol + jol-core + 0.17 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + {maven.compiler.source} + {maven.compiler.target} + + + + + + \ No newline at end of file diff --git a/src/jvm/ObjectCreate.java b/src/main/java/jvm/ObjectCreate.java similarity index 79% rename from src/jvm/ObjectCreate.java rename to src/main/java/jvm/ObjectCreate.java index 1431aad..3af3da1 100644 --- a/src/jvm/ObjectCreate.java +++ b/src/main/java/jvm/ObjectCreate.java @@ -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 { diff --git a/src/main/java/jvm/ShowObjectHeader.java b/src/main/java/jvm/ShowObjectHeader.java new file mode 100644 index 0000000..ec89b7d --- /dev/null +++ b/src/main/java/jvm/ShowObjectHeader.java @@ -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()); + + } +} diff --git a/src/createthread/CreateByAnonymousClass.java b/src/main/java/jvm/createthread/CreateByAnonymousClass.java similarity index 91% rename from src/createthread/CreateByAnonymousClass.java rename to src/main/java/jvm/createthread/CreateByAnonymousClass.java index 6643a7d..13188b0 100644 --- a/src/createthread/CreateByAnonymousClass.java +++ b/src/main/java/jvm/createthread/CreateByAnonymousClass.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; public class CreateByAnonymousClass { diff --git a/src/createthread/CreateByCallable.java b/src/main/java/jvm/createthread/CreateByCallable.java similarity index 94% rename from src/createthread/CreateByCallable.java rename to src/main/java/jvm/createthread/CreateByCallable.java index 1fe5eba..d038c09 100644 --- a/src/createthread/CreateByCallable.java +++ b/src/main/java/jvm/createthread/CreateByCallable.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; diff --git a/src/createthread/CreateByCompletableFuture.java b/src/main/java/jvm/createthread/CreateByCompletableFuture.java similarity index 96% rename from src/createthread/CreateByCompletableFuture.java rename to src/main/java/jvm/createthread/CreateByCompletableFuture.java index f4409c0..0c09314 100644 --- a/src/createthread/CreateByCompletableFuture.java +++ b/src/main/java/jvm/createthread/CreateByCompletableFuture.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; diff --git a/src/createthread/CreateByExecutorService.java b/src/main/java/jvm/createthread/CreateByExecutorService.java similarity index 94% rename from src/createthread/CreateByExecutorService.java rename to src/main/java/jvm/createthread/CreateByExecutorService.java index 0f775b7..72f3de3 100644 --- a/src/createthread/CreateByExecutorService.java +++ b/src/main/java/jvm/createthread/CreateByExecutorService.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.concurrent.*; diff --git a/src/createthread/CreateByForkJoin.java b/src/main/java/jvm/createthread/CreateByForkJoin.java similarity index 92% rename from src/createthread/CreateByForkJoin.java rename to src/main/java/jvm/createthread/CreateByForkJoin.java index 5fd769d..ac1e6ad 100644 --- a/src/createthread/CreateByForkJoin.java +++ b/src/main/java/jvm/createthread/CreateByForkJoin.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.Arrays; import java.util.List; diff --git a/src/createthread/CreateByFutureTask.java b/src/main/java/jvm/createthread/CreateByFutureTask.java similarity index 91% rename from src/createthread/CreateByFutureTask.java rename to src/main/java/jvm/createthread/CreateByFutureTask.java index 1dcbfa3..973d233 100644 --- a/src/createthread/CreateByFutureTask.java +++ b/src/main/java/jvm/createthread/CreateByFutureTask.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.concurrent.FutureTask; diff --git a/src/createthread/CreateByRunnable.java b/src/main/java/jvm/createthread/CreateByRunnable.java similarity index 90% rename from src/createthread/CreateByRunnable.java rename to src/main/java/jvm/createthread/CreateByRunnable.java index 5948c5e..636dfeb 100644 --- a/src/createthread/CreateByRunnable.java +++ b/src/main/java/jvm/createthread/CreateByRunnable.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; public class CreateByRunnable implements Runnable{ @Override diff --git a/src/createthread/CreateByThread.java b/src/main/java/jvm/createthread/CreateByThread.java similarity index 89% rename from src/createthread/CreateByThread.java rename to src/main/java/jvm/createthread/CreateByThread.java index 5bab5b2..88ffb25 100644 --- a/src/createthread/CreateByThread.java +++ b/src/main/java/jvm/createthread/CreateByThread.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; public class CreateByThread extends Thread{ @Override diff --git a/src/createthread/CreateByThreadGroup.java b/src/main/java/jvm/createthread/CreateByThreadGroup.java similarity index 93% rename from src/createthread/CreateByThreadGroup.java rename to src/main/java/jvm/createthread/CreateByThreadGroup.java index 2c907d0..9ca8961 100644 --- a/src/createthread/CreateByThreadGroup.java +++ b/src/main/java/jvm/createthread/CreateByThreadGroup.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; public class CreateByThreadGroup { diff --git a/src/createthread/CreateByTimer.java b/src/main/java/jvm/createthread/CreateByTimer.java similarity index 91% rename from src/createthread/CreateByTimer.java rename to src/main/java/jvm/createthread/CreateByTimer.java index b4222bb..706dd20 100644 --- a/src/createthread/CreateByTimer.java +++ b/src/main/java/jvm/createthread/CreateByTimer.java @@ -1,4 +1,4 @@ -package createthread; +package main.java.jvm.createthread; import java.util.Timer; import java.util.TimerTask; diff --git a/src/recursive/TreeNode.java b/src/main/java/recursive/TreeNode.java similarity index 96% rename from src/recursive/TreeNode.java rename to src/main/java/recursive/TreeNode.java index be85746..30b7814 100644 --- a/src/recursive/TreeNode.java +++ b/src/main/java/recursive/TreeNode.java @@ -1,4 +1,4 @@ -package recursive; +package main.java.recursive; import java.util.ArrayList; import java.util.List; diff --git a/src/recursive/TreeStructure.java b/src/main/java/recursive/TreeStructure.java similarity index 97% rename from src/recursive/TreeStructure.java rename to src/main/java/recursive/TreeStructure.java index 10fb3c0..ef848ca 100644 --- a/src/recursive/TreeStructure.java +++ b/src/main/java/recursive/TreeStructure.java @@ -1,4 +1,4 @@ -package recursive; +package main.java.recursive; import java.util.*;