当前位置:  编程技术>移动开发
本页文章导读:
    ▪java中的lock跟synchronized区别        java中的lock和synchronized区别 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候     线程A和B都要获取对象O的锁定,假设A获取了对象O锁.........
    ▪ Spring学习1        Spring学习一 spring bean注入默认单例,action时最好不要使用全局变量,全局变量记录值,特别是web应用中所有用户使用一个单例,除非你每个方法都给所有全局变量赋值或者清空,否则极有可.........
    ▪ UIView CALayer 属性不显示异常 Property cannot be found in forward class object 'CALayer       UIView CALayer 属性不显示错误 Property cannot be found in forward class object 'CALayer #import <QuartzCore/CALayer.h>。   ......

[1]java中的lock跟synchronized区别
    来源: 互联网  发布时间: 2014-02-18
java中的lock和synchronized区别
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候
     线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,
     如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断
     如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情

    ReentrantLock获取锁定与三种方式:
    a)  lock(), 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁
    b) tryLock(), 如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false;
    c)tryLock(long timeout,TimeUnit unit),   如果获取了锁定立即返回true,如果别的线程正持有锁,会等待参数给定的时间,在等待的过程中,如果获取了锁定,就返回true,如果等待超时,返回false;
    d) lockInterruptibly:如果获取了锁定立即返回,如果没有获取锁定,当前线程处于休眠状态,直到或者锁定,或者当前线程被别的线程中断

2、synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必须将unLock()放到finally{}中

3、在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态;

    
[2] Spring学习1
    来源: 互联网  发布时间: 2014-02-18
Spring学习一

spring bean注入默认单例,action时最好不要使用全局变量,全局变量记录值,特别是web应用中所有用户使用一个单例,除非你每个方法都给所有全局变量赋值或者清空,否则极有可能用用户信息混乱,当然也可以修改bean配置。
scope:
singleton单例
Property每次都new新对象
request
ApplicationContext
session
global session
一般都用前两个
使用request session global session的时候要在web.xml里配置


    
[3] UIView CALayer 属性不显示异常 Property cannot be found in forward class object 'CALayer
    来源: 互联网  发布时间: 2014-02-18
UIView CALayer 属性不显示错误 Property cannot be found in forward class object 'CALayer
sdk版本升级到5.1,在项目中设置view的layer属性时,会发生错误,"Property 'c' cannot be found in forward class object 'CALayer *",这时需要引入
#import <QuartzCore/CALayer.h>。

 

在以前的sdk版本中,不需要引入就可以设置layer的属性,但是到了5.1,不引入就会编译通不过了。

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3