java如何锁住一个方法? 比如多个线程会写log,但是只有一个log文件,这样文件句柄会被多个线程打开,这个不是我想看到的,现在只有一个方法可以写log文件(比如:void Log(String msg)),如果锁住这个方法每次只有一个线程可以写,其他线程只能等待写完后才能抢到锁?还有一个问题,java里的锁能被自己递归获得么?比如有一个方法递归调用自己,而这个方法是线程安全的进入后会加锁这样会死锁么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NIO的文件锁 有写锁和读锁锁是相对线程而言的 递归在一个线程中 没有和自己抢占资源 死锁的概念 应该用一个log类将写文件的操作封装,然后用synchronized方法来实现具体的写文件。这样只有一个线程可以真正的写文件。不过这样做效率很低,建议用缓存将要写的内容分批的写入~! (1)void Log(String msg){ synchronized(this.getClass()){ 写文件 }}(2)这叫锁的可重入性,同一个线程可以在保持锁不释放的前提下,再次获得此锁。 求类似订单id的解决办法,做过项目的朋友过来看看 tomcat6.0和tomcat5.0冲突,项目卡死! 一个关于JSP网站发布的问题 hibernate3.2 one-to-one求助 java多线程一道题,求高人。。 jboss做服务器有时候访问找不到页面,刷新下就好了 请问那里可以下载到javascript和xml的视频教程,谢谢 多个war项目共享一个java项目的数据 不怕人笑话,大胆提问题,敢问大家常说的struts到底是什么东东? java 手动动态注入bean SSH框架中如何保留bean struts2上传问题
void Log(String msg){
synchronized(this.getClass()){
写文件
}
}
(2)这叫锁的可重入性,同一个线程可以在保持锁不释放的前提下,再次获得此锁。