Class DBConnect{ //用于创建数据库连接
public Connection getConn(){
Sychonize(DBConnect.class){
//获得数据库联接
return ...;
}
......
}
}Sychonize(DBConnect.class)有什么作用么?DBConnect.class我只能能得到DBConnect载入虚拟机后的class句柄,一般用这个可以得到DBConnect的方法、构造函数等等,我只会这么用,放在Sychonize里有什么用处么?难道可以防止用户并发访问?
public Connection getConn(){
Sychonize(DBConnect.class){
//获得数据库联接
return ...;
}
......
}
}Sychonize(DBConnect.class)有什么作用么?DBConnect.class我只能能得到DBConnect载入虚拟机后的class句柄,一般用这个可以得到DBConnect的方法、构造函数等等,我只会这么用,放在Sychonize里有什么用处么?难道可以防止用户并发访问?
pnlTable.add(pnlTableB, java.awt.BorderLayout.SOUTH);
pnlTableT.setLayout(borderLayout6);
pnlTableT.add(splTable, java.awt.BorderLayout.CENTER);
pnlTableB.setLayout(borderLayout7);
pnlTableB.add(tabHeadB,java.awt.BorderLayout.NORTH);
pnlTableB.add(scrTableB, java.awt.BorderLayout.CENTER);
scrTableB.getViewport().add(tabB);
splTable.setResizeWeight(0.5);
splTable.setDividerSize(2);
scrTableR.getViewport().add(tabR);
scrTableL.getViewport().add(tabL);
splTable.add(pnlScrTL, JSplitPane.LEFT);
splTable.add(pnlScrTR, JSplitPane.RIGHT);
pnlScrTR.add(scrTableR,java.awt.BorderLayout.CENTER);
pnlScrTR.add(tabHeadR,java.awt.BorderLayout.NORTH);
pnlScrTL.add(scrTableL,java.awt.BorderLayout.CENTER);
pnlScrTL.add(tabHeadL,java.awt.BorderLayout.NORTH);
=====================================================
产品应该是一样的 只是加工方式不一样 前者是手工作坊 后者是机器代工(类似于Factory Method)
Class c1=DBConnect.class;
Class c2=DBConnect.class;
那么c1和c2是不是一样?
那个关键字是同步和加锁两重意思,也就是说,同一时间内,只有一个可以访问。
因为它保证了 只有一个线程访问DBConnect.class的对象,而一下的代码只会有一个线程去访问。
楼主给的代码,我理解作者的意思是, 数据库连接类在应用中线程保护,也就是说只有应用中只允许已有一个功能连数据库,而其他功能想要在同一时刻连数据库就只能等上一个连完才能连上,可能是想保证数据库的时效性。 如有不足请指正。
Synchronized(this)是锁哪里的
这两个应该先搞清楚DBConnect.class是指这个class
this是指这一个实例
单例时,只能创建一个实例,这是不同的
不过一般用单例模式都会写上这一段,以避免并发创建实例的吧