社区
Java EE
帖子详情
java如何锁住一个方法?
wsxqaz
2011-11-14 01:34:09
比如多个线程会写log,但是只有一个log文件,这样文件句柄会被多个线程打开,这个不是我想看到的,现在只有一个方法可以写log文件(比如:void Log(String msg)),如果锁住这个方法每次只有一个线程可以写,其他线程只能等待写完后才能抢到锁?
还有一个问题,java里的锁能被自己递归获得么?比如有一个方法递归调用自己,而这个方法是线程安全的进入后会加锁这样会死锁么?
...全文
358
3
打赏
收藏
java如何锁住一个方法?
比如多个线程会写log,但是只有一个log文件,这样文件句柄会被多个线程打开,这个不是我想看到的,现在只有一个方法可以写log文件(比如:void Log(String msg)),如果锁住这个方法每次只有一个线程可以写,其他线程只能等待写完后才能抢到锁? 还有一个问题,java里的锁能被自己递归获得么?比如有一个方法递归调用自己,而这个方法是线程安全的进入后会加锁这样会死锁么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
若鱼1919
2011-11-14
打赏
举报
回复
(1)
void Log(String msg){
synchronized(this.getClass()){
写文件
}
}
(2)这叫锁的可重入性,同一个线程可以在保持锁不释放的前提下,再次获得此锁。
jc8futao
2011-11-14
打赏
举报
回复
应该用一个log类将写文件的操作封装,然后用synchronized方法来实现具体的写文件。这样只有一个线程可以真正的写文件。不过这样做效率很低,建议用缓存将要写的内容分批的写入~!
阳明 to life
2011-11-14
打赏
举报
回复
NIO的文件锁 有写锁和读锁
锁是相对线程而言的 递归在一个线程中 没有和自己抢占资源 死锁的概念
Java
锁 到底锁的是哪个对象?
一段synchronized的代码被
一个
线程执行之前,他要先拿到执行这段代码的权限,在
java
里边就是拿到某个同步对象的锁(
一个
对象只有一把锁);如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁
java
对象锁和类锁的区别
1.
一个
类可以有多个对象,所以
一个
类可以有多个对象锁。 2.当
一个
类中有多个synchronized修饰的同步
方法
时,其中
一个
方法
被线程访问持有锁,其他
方法
同样被
锁住
,其他线程依然不能访问其他同步
方法
,因为此时
锁住
的是该类的对象,相当于整个对象
锁住
了。 3.
一个
类只能有
一个
.claas,所有
一个
类只能有
一个
类锁。首先的明白
java
中锁的机制 synchronized 在修饰代码块的时候需
java
多线程中,对同
一个
类的静态
方法
加锁后,调用该
方法
,其他
方法
的调用会受到影响吗?
对象锁与类锁从
一个
问题说起对象锁与类锁synchronized 从
一个
问题说起 一直想要把一些学习历程和感悟记录下来,但是未曾静下心来好好思索一下,今天,就从朋友问到的
一个
问题开始,静态
方法
加锁后,其他
方法
会受影响吗? 对象锁与类锁
java
中每
一个
对象都持有一把锁–monitor,monitor在操作系统中被称为管程,也可翻译为监视器,
java
中的monitor其实是对操作系统中monitor...
java
对
一个
对象加锁,锁的是什么东西?
线程同步相关知识详解。 一、同步代码块 作用:把出现线程安全问题的核心代码给上锁 原理:每次只能
一个
线程进入,执行完毕后自动解决,其他线程才可以进来执行。 synchronized(同步锁对象) { 操作共享资源的代码(核心代码) } 锁对象要求 理论上:锁对象只要对于当前同时执行的现成来说是同
一个
对象即可。 锁对象用任意唯一的对象好不好呢? 不好,会影响其他无关线程的执行。 锁对象的规范要求 规范上:建议使用共享资源作为锁对象。 对于实例
方法
建议使用this作为锁对象。
Java
方法
锁、对象锁、类锁
首先介绍一下对象锁(也叫
方法
锁)与类锁有那些不同。下文中使用对象锁称呼代替
方法
锁。 对于对象锁,是针对
一个
对象的,它只在该对象的某个内存位置声明
一个
标志位标识该对象是否拥有锁,所以它只会
锁住
当前的对象。一般
一个
对象锁是对
一个
非静态成员变量进行syncronized修饰,或者对
一个
非静态
方法
进行syncronized修饰。对于对象锁,不同对象访问同
一个
被syncronized修饰的
方法
的时
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章