diff --git a/src/main/java/thead/thread_7/Run.java b/src/main/java/thead/thread_7/Run.java
new file mode 100644
index 0000000..7f50a38
--- /dev/null
+++ b/src/main/java/thead/thread_7/Run.java
@@ -0,0 +1,12 @@
+package thead.thread_7;
+
+public class Run {
+ public static void main(String[] args) {
+ Service service = new Service();
+ ThreadA threadA = new ThreadA(service);
+ threadA.start();
+
+ ThreadB threadB = new ThreadB(service);
+ threadB.start();
+ }
+}
diff --git a/src/main/java/thead/thread_7/Service.java b/src/main/java/thead/thread_7/Service.java
new file mode 100644
index 0000000..b499d35
--- /dev/null
+++ b/src/main/java/thead/thread_7/Service.java
@@ -0,0 +1,21 @@
+package thead.thread_7;
+
+public class Service {
+ public synchronized static void methodB() {
+ synchronized (Service.class) {
+ System.out.println("B方法开始");
+ System.out.println("B方法结束");
+ }
+ }
+
+ public void methodA() {
+ synchronized (this) {
+ System.out.println("A方法开始");
+ boolean b = true;
+ while (b) {
+
+ }
+ System.out.println("A方法结束");
+ }
+ }
+}
diff --git a/src/main/java/thead/thread_7/ThreadA.java b/src/main/java/thead/thread_7/ThreadA.java
new file mode 100644
index 0000000..d1e8b73
--- /dev/null
+++ b/src/main/java/thead/thread_7/ThreadA.java
@@ -0,0 +1,23 @@
+package thead.thread_7;
+
+public class ThreadA extends Thread {
+
+ public Service service;
+
+ /**
+ * Allocates a new {@code Thread} object. This constructor has the same
+ * effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}
+ * {@code (null, null, gname)}, where {@code gname} is a newly generated
+ * name. Automatically generated names are of the form
+ * {@code "Thread-"+}n, where n is an integer.
+ */
+ public ThreadA(Service service) {
+ super.run();
+ this.service = service;
+ }
+
+ @Override
+ public void run() {
+ service.methodA();
+ }
+}
diff --git a/src/main/java/thead/thread_7/ThreadB.java b/src/main/java/thead/thread_7/ThreadB.java
new file mode 100644
index 0000000..2286a71
--- /dev/null
+++ b/src/main/java/thead/thread_7/ThreadB.java
@@ -0,0 +1,22 @@
+package thead.thread_7;
+
+public class ThreadB extends Thread {
+
+ private final Service service;
+
+ /**
+ * Allocates a new {@code Thread} object. This constructor has the same
+ * effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}
+ * {@code (null, null, gname)}, where {@code gname} is a newly generated
+ * name. Automatically generated names are of the form
+ * {@code "Thread-"+}n, where n is an integer.
+ */
+ public ThreadB(Service service) {
+ this.service = service;
+ }
+
+ @Override
+ public void run() {
+ service.methodB();
+ }
+}