synchronized java 多线程 查询数据库时同步不了 帮忙各位
发布网友
发布时间:2022-05-04 18:32
我来回答
共2个回答
热心网友
时间:2022-06-24 16:27
你的MailUtil对每个用户来说每次是new Object, synchronized (this)只是获取当前MailUtil Object的锁,每个用户有不同的MailUtil Object,那么又怎么会同步呢?每个线程synchronized里的Object必须是同一个才能起到同步的作用啊。
热心网友
时间:2022-06-24 16:28
public class MailUtil implements Runnable {
private static final String str= "111";
private String userId;
private User user;
public MailUtil(String userId,User user){
this.userId = userId;
this.user = user;
}
public void run() {
synchronized (str){
System.out.println("线程启动");
MailAction ma = new MailAction();
ma.sendMailThread(userId, user);
}
}
}
你别把监视器加了各个对象了,要弄一个固定监视器对象。