ThinkPhp RBAC权限配置中关于用户表不是user的处理【_ACCESS_LIST为空】
2014-01-21 17:27
447 查看
package concurrent; import java.util.Random; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; /** *1、readLock可重入; *2、writeLock必须等待所有的readLock释放后才可进入; *3、writeLock范围内,readLock不可进入 */ public class ReadWriteLockTest { private ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); private ReadLock readLock = readWriteLock.readLock(); private WriteLock writeLock = readWriteLock.writeLock(); private String shareData = "寂寞等待中。。。"; public ReadWriteLockTest() { } public void write(String str) { writeLock.lock();//可用tryLock()干点其他事 // if(!writeLock.tryLock()){ // System.err.println("读锁数量:"+readWriteLock.getReadLockCount()); // return; // } System.err.println("ThreadName:" + Thread.currentThread().getName() + " locking..."); try { shareData = str; System.err.println("ThreadName:" + Thread.currentThread().getName() + " 修改为:" + str); Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } finally { System.err.println("ThreadName:" + Thread.currentThread().getName() + " unlock..."); writeLock.unlock(); } } public String read() { readLock.lock(); System.out.println("ThreadName:" + Thread.currentThread().getName() + " lock..."); try { System.out.println("ThreadName:" + Thread.currentThread().getName() + " 获取为:" + shareData); Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } finally { readLock.unlock(); System.out.println("ThreadName:" + Thread.currentThread().getName() + " unlock..."); } return shareData; } /** * @param args */ public static void main(String[] args) { final ReadWriteLockTest shareData = new ReadWriteLockTest(); for (int i = 0; i < 5; i++) { new Thread(new Runnable() { @Override public void run() { shareData.read(); } }, "get Thread-" + i).start(); } for (int i = 0; i < 10; i++) { new Thread(new Runnable() { @Override public void run() { shareData.write(new Random().nextLong() + ""); } }, "write Thread-" + i).start(); } } }
相关文章推荐
- Yii的CClientScript简单操作
- thinkphp 路径
- PHP json_encode
- Yii 简单登录操作
- 使用PHP实现简单Hash表
- LNMP环境下php拓展mcrypt和openssl模块
- 第四节 RTP实现概述
- 安卓中使用ContentProvider获取和添加联系人
- Ubuntu 9虚拟机中配置pppoe、pptp、l2tpserver
- PHP内核浅析-1.整体概念
- php中防止SQL注入的方法[转载]
- iOS 推送证书制作(JAVA/PHP)
- 详谈PHP之cookie的路径
- ubuntu 12.04安装TP-LINK TL-WN725N v2
- xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题
- PHP多种形式发送邮件
- xdebug php
- 中文汉字转拼音的最简便方法
- Thinkphp模板标签 For标签
- ftp上传不成功,提示501 invalid character in command错误