Lock的基本使用
2015-12-01 21:33
309 查看
Lock的实现类ReentrantLock
Reentrant:折返注意:不同线程中需要同步的代码需要要持有同一个锁,才能实现同步的效果。在以下的代码中,使用了传入统一Outputer对象的方法,使其具有同一个锁。
package cn.iktz.thread.demo; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class LockTest2 { public static void main(String[] args) { new LockTest2().init(); } private void init() { Outputer outputer = new Outputer(); new Thread(new MyRunnable(outputer, "1234567")).start(); new Thread(new MyRunnable(outputer, "abcdefg")).start(); } } class Outputer { Lock lock = new ReentrantLock(); public void output(String name) { int len = name.length(); lock.lock(); try { for (int i = 0; i < len; i++) { System.out.print(name.charAt(i)); } System.out.println(); } finally { lock.unlock(); } } } class MyRunnable implements Runnable { private Outputer outputer; private String name; public MyRunnable(Outputer outputer, String name) { this.outputer = outputer; this.name = name; } @Override public void run() { while (true) { outputer.output(name); } } }
相关文章推荐
- poj3070 Fibonacci
- DecimalFormat用法
- Linux系统忘了root密码
- javascript实现无兼容性问题返回顶部
- iOS-自定义 UITabBarController
- 集群监控之web端动态的显示数据(highchart)
- iOS-自定义 UITabBarController
- iOS8中添加的extensions总结(二)——分享扩展
- JSP之监听器Listener(二)
- 《算法竞赛入门经典2ndEdition 》习题3-4 周期串(Periodic Strings, Uva455)
- Java多线程-synchronized关键字
- Java线程Thread中的同步块synchronized
- 异常解决:java.net.ConnectException: Call To Master/127.0.0.1:9000 failed on connection exception
- 截屏方式
- swift初体验
- BZOJ2425: [HAOI2010]计数
- linux察看安装包有那些
- 关于单链表
- 第十四周--是否二叉排序树?
- CodeForces 600A - Extract Numbers (模拟题)