社区
Java EE
帖子详情
java如何锁住一个方法?
wsxqaz
2011-11-14 01:34:09
比如多个线程会写log,但是只有一个log文件,这样文件句柄会被多个线程打开,这个不是我想看到的,现在只有一个方法可以写log文件(比如:void Log(String msg)),如果锁住这个方法每次只有一个线程可以写,其他线程只能等待写完后才能抢到锁?
还有一个问题,java里的锁能被自己递归获得么?比如有一个方法递归调用自己,而这个方法是线程安全的进入后会加锁这样会死锁么?
...全文
387
3
打赏
收藏
java如何锁住一个方法?
比如多个线程会写log,但是只有一个log文件,这样文件句柄会被多个线程打开,这个不是我想看到的,现在只有一个方法可以写log文件(比如:void Log(String msg)),如果锁住这个方法每次只有一个线程可以写,其他线程只能等待写完后才能抢到锁? 还有一个问题,java里的锁能被自己递归获得么?比如有一个方法递归调用自己,而这个方法是线程安全的进入后会加锁这样会死锁么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
锁住
的是整个对象还是只有
方法
先上结论: 类
方法
中,synchronized
锁住
的是对象this,只有调用同
一个
对象的
方法
才需要获取锁。同时,同
一个
对象中所有加了synchronize的
方法
只能一次调用
一个
静态
方法
中,synchronized锁的是整个类对象,类似于(X.class),该类中所有加了synchronized的静态
方法
,一次只能调用
一个
1 class Sync { 2 ...
java
同步
方法
的锁_
Java
同步
方法
:synchronized到底
锁住
了谁?
前言相信不少同学在上完
Java
课后,对于线程同步部分的实战,都会感到不知其然。比如上课做实验的时候,按着老师的实验指导书中的描述完成了多线程的同步操作,就感觉自己已经掌握这个知识点了,实际运用中再次手足无措,就像我一样。 这里提问一下:synchronized对
方法
修饰,在别处调用这个
方法
时,谁被锁定了呢?另外,在新建线程中使用synchronized(this){ }结构时,如:void met...
java
中如何锁定这个
方法
_
Java
同步
方法
:synchronized到底
锁住
了谁?
[TOC]前言相信不少同学在上完
Java
课后,对于线程同步部分的实战,都会感到不知其然。比如上课做实验的时候,按着老师的实验指导书中的描述完成了多线程的同步操作,就感觉自己已经掌握这个知识点了,实际运用中再次手足无措,就像我一样。 这里提问一下:synchronized对
方法
修饰,在别处调用这个
方法
时,谁被锁定了呢?另外,在新建线程中使用synchronized(this){ }结构时,如:voi...
Java
并发:synchronized
方法
vs 代码块,都
锁住
了什么?
synchronized 修饰
方法
vs 代码块,真的只是写法不同吗?字节码揭秘:
一个
用 ACC_SYNCHRONIZED 标志"隐式加锁",
一个
用 monitorenter 指令"显式控制",但底层操作的竟是同
一个
对象头(Mark Word)!本文带你穿透语法糖,从 JVM 视角看懂锁的本质,掌握锁粒度优化与私有锁对象的最佳实践,写出更安全、高性能的并发代码。
java
锁住
方法
_
java
同步锁的正确使用
方法
(必看篇)
同步锁分类对象锁(this)类锁(类的字节码文件对象即类名.class)字符串锁(比较特别)应用场景在多线程下对共享资源的安全操作。需求:启动5个线程对共享资源total进行安全操作。同步锁在多线程单例模式下的使用以上三类同步锁都可以。package cn.myThread;public class MyThread implements Runnable {private static int ...
Java EE
67,535
社区成员
225,849
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章