diff --git a/src/MultiThreadDemo.java b/src/main/java/threaddemo/MultiThreadDemo.java similarity index 70% rename from src/MultiThreadDemo.java rename to src/main/java/threaddemo/MultiThreadDemo.java index c222e7b..6a41a6a 100644 --- a/src/MultiThreadDemo.java +++ b/src/main/java/threaddemo/MultiThreadDemo.java @@ -1,3 +1,5 @@ +package threaddemo; + import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; @@ -11,10 +13,7 @@ public class MultiThreadDemo { // 遍历线程信息,仅打印线程 ID 和线程名称信息 for (ThreadInfo threadInfo : threadInfos) { - System.out.println("[" + threadInfo.getThreadId() + "] " - + threadInfo.getThreadName() - + "; Thread state: " + threadInfo.getThreadState() - + " ; Is daemon: " + threadInfo.isDaemon() + System.out.println(STR."[\{threadInfo.getThreadId()}] \{threadInfo.getThreadName()}; Thread state: \{threadInfo.getThreadState()} ; Is daemon: \{threadInfo.isDaemon()}" ); } } diff --git a/src/ProcessDemo.java b/src/main/java/threaddemo/ProcessDemo.java similarity index 98% rename from src/ProcessDemo.java rename to src/main/java/threaddemo/ProcessDemo.java index 0739b54..8168a3b 100644 --- a/src/ProcessDemo.java +++ b/src/main/java/threaddemo/ProcessDemo.java @@ -1,3 +1,5 @@ +package threaddemo; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; diff --git a/src/ThreadLocalDemo.java b/src/main/java/threaddemo/ThreadLocalDemo.java similarity index 98% rename from src/ThreadLocalDemo.java rename to src/main/java/threaddemo/ThreadLocalDemo.java index a8221dd..679b095 100644 --- a/src/ThreadLocalDemo.java +++ b/src/main/java/threaddemo/ThreadLocalDemo.java @@ -1,3 +1,5 @@ +package threaddemo; + public class ThreadLocalDemo { public ThreadLocal localVar = new ThreadLocal<>(); diff --git a/src/ThreadShareVariable.java b/src/main/java/threaddemo/ThreadShareVariable.java similarity index 98% rename from src/ThreadShareVariable.java rename to src/main/java/threaddemo/ThreadShareVariable.java index 8d39aef..4e074d5 100644 --- a/src/ThreadShareVariable.java +++ b/src/main/java/threaddemo/ThreadShareVariable.java @@ -1,4 +1,4 @@ -import java.util.stream.DoubleStream; +package threaddemo; /** * 类ThreadShareVariable演示了线程间共享变量的使用和潜在风险 diff --git a/src/main/java/threaddemo/ThreadStateWithJoin.java b/src/main/java/threaddemo/ThreadStateWithJoin.java new file mode 100644 index 0000000..8bdef61 --- /dev/null +++ b/src/main/java/threaddemo/ThreadStateWithJoin.java @@ -0,0 +1,35 @@ +package threaddemo; + +public class ThreadStateWithJoin { + + public static void main(String[] args) throws InterruptedException { + Thread t1 = new Thread(() -> { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + + Thread t2 = new Thread(() -> { + try { + System.out.println("t2 start"); + t1.join(100); + + t1.join(); + System.out.println("t2 end"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + + t1.start(); + t2.start(); + + Thread.sleep(20); + System.out.println(STR."t2 state: \{t2.getState()}"); + + Thread.sleep(100); + System.out.println(STR."t2 state: \{t2.getState()}"); + } +} diff --git a/src/main/java/threaddemo/ThreadStateWithSync.java b/src/main/java/threaddemo/ThreadStateWithSync.java new file mode 100644 index 0000000..29125d6 --- /dev/null +++ b/src/main/java/threaddemo/ThreadStateWithSync.java @@ -0,0 +1,19 @@ +package threaddemo; + +public class ThreadStateWithSync { + + public static void main(String[] args) throws InterruptedException { + Thread t1 = new Thread(() -> { + synchronized (ThreadStateWithSync.class) { + System.out.println("t1 get lock "); + } + }); + + synchronized (ThreadStateWithSync.class) { + t1.start(); + Thread.sleep(100L); + + System.out.println(STR."t1 state: \{t1.getState()}"); + } + } +} diff --git a/src/WeakReferenceExample.java b/src/main/java/threaddemo/WeakReferenceExample.java similarity index 98% rename from src/WeakReferenceExample.java rename to src/main/java/threaddemo/WeakReferenceExample.java index ca3421a..797903f 100644 --- a/src/WeakReferenceExample.java +++ b/src/main/java/threaddemo/WeakReferenceExample.java @@ -1,3 +1,5 @@ +package threaddemo; + import java.lang.ref.WeakReference; public class WeakReferenceExample {