feat: synchronized-2

This commit is contained in:
Bunny 2024-12-30 14:54:08 +08:00
parent 8a8881fd03
commit e90294d7d6
4 changed files with 78 additions and 0 deletions

View File

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

View File

@ -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方法结束");
}
}
}

View File

@ -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-"+}<i>n</i>, where <i>n</i> is an integer.
*/
public ThreadA(Service service) {
super.run();
this.service = service;
}
@Override
public void run() {
service.methodA();
}
}

View File

@ -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-"+}<i>n</i>, where <i>n</i> is an integer.
*/
public ThreadB(Service service) {
this.service = service;
}
@Override
public void run() {
service.methodB();
}
}