(java编程)请问java中synchronized是什么?可以举例一二吗?谢了

2025-04-16 19:28:18
推荐回答(2个)
回答1:

//synchromized
package MyPackage;

class A {

synchronized void get() {
System.out.println("A");
System.out.println("B");

}

synchronized void put() {
System.out.println("C");
System.out.println("D");

}
}

class Get implements Runnable {
Thread t;
A temp;

Get(A a) {
temp = a;
t = new Thread(this);
t.start();
}

public void run() {
temp.get();
}

}

class Put implements Runnable {

Thread t;
A temp;

Put(A a) {
temp = a;
t = new Thread(this);
t.start();
}

public void run() {
temp.put();

}

}

class MyJava {
static public void main(String args[]) {
A o = new A();
Get o1 = new Get(o);
Put o2 = new Put(o);

try {
o1.t.join();
o2.t.join();

} catch (InterruptedException e) {

System.out.println("interrupted!");
}

}
}

synchronized就是把一个线程调用的方法放在一个锁里面,让别的线程在方法返回前不能调用这个方法,但是要注意Put和Get里用的是同一个A实例,是由main方法传递上来的

回答2:

同步的,比如3个线程(看做3个站台)完成一个卖100张票的任务,可能会出现3个站台同时卖一张票的情况,但是用synchronized后,就会同步,不会3个站台同时去卖一张票的情况,synchronized是用来同步的