搜索工作 |
搜索工作 公司点评 查工资 看趋势
微信

使用微信服务,更方便

职友集>Java面试题 > 介绍一下Java共享数据的并发处理

介绍一下Java共享数据的并发处理

2015-03-07 06:30:02 阅读( 3 )

2184人 收藏本页

标签:Java面试题

两个线程修改共享资源时会出现数据的不一致,为避免这种现象采用对访问的线程做限制的方法。利用每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访问这个资源,没有锁标记便进入锁池。

1.Synchronized修饰代码块

public void push(char c){

synchronized(this){



}

}

对括号内的对象加锁,只有拿到锁标记的对象才能执行该代码块

2.Synchronized修饰方法

public synchronized void push(char c) {



}

对当前对象的加锁,只有拿到锁标记的对象才能执行该方法

注:方法的Synchronized特性本身不会被继承,只能覆盖。

线程因为未拿到锁标记而发生阻塞进入锁池(lock pool)。每个对象都有自己的一个锁池的空间,用于放置等待运行的线程。由系统决定哪个线程拿到锁标记并运行。

来自IT公司面试手册

下一篇:Java使用互斥锁的注意事项

上一篇:线程实现的两种形式

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题