**
*
* @描述: Lock比传统线程模型中的synchronized方式更加面向对象、与生活中的锁类似,锁本身也应该是一个对象,两个线程执行的代码片段要实现同步互排的效果
* 它们必须用同一个LOCK,锁是上线代表要操作的资源内部类的内部方法上,而不是线程的方法中 .
* @作者: Wnj .
* @创建时间: 2017年5月16日 .
* @版本: 1.0 .
*/
public class LockTest { /**
* @param args
*/
public static void main(String[] args) {
new LockTest().init();
} private void init() {
final Outputer outputer = new Outputer(); //A
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(10);
}
catch (InterruptedException e) {
e.printStackTrace();
}
//如果A线程还没打印完成,B线程就被调度执行,那么打印就不完整
outputer.output("zhangxiaoxiang");
} }
}).start(); //B
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(10);
}
catch (InterruptedException e) {
e.printStackTrace();
}
outputer.output("lihuoming");
} }
}).start(); } /**
*
* @描述: 锁是上线代表要操作的资源内部类的内部方法上
* @作者: Wnj .
* @创建时间: 2017年5月16日 .
* @版本: 1.0 .
*/
static class Outputer { Lock lock = new ReentrantLock(); /**
* 使用lock
* <功能详细描述>
* @param name
*/
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();
}
}
/**
* 使用synchronized
* <功能详细描述>
* @param name
*/
public synchronized void output2(String name) {
int len = name.length();
for (int i = 0; i < len; i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}
/**
* 使用synchronized
* <功能详细描述>
* @param name
*/
public static synchronized void output3(String name) {
int len = name.length();
for (int i = 0; i < len; i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}
}
}

并发包java.util.concurrent.locks.Lock的更多相关文章

  1. 简述synchronized和java.util.concurrent.locks.Lock的异同?

    主要相同点:Lock能完成synchronized所实现的所有功能 . 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一 ...

  2. 12、java5锁java.util.concurrent.locks.Lock之ReentrantLock

    JDK文档描述: public interface LockLock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此实现允许更灵活的结构,可以具有差别很大的属性,可 ...

  3. synchronized 和 java.util.concurrent.locks.Lock 的异同 ?

    主要相同点:Lock 能完成 synchronized 所实现的所有功能 主要不同点:Lock 有比synchronized 更精确的线程语义和更好的性能. synchronized 会自动释放锁,而 ...

  4. 简述synchronized和java.util.concurrent.locks.Lock异同

    主要相同点:Lock能完成synchronized所实现的所有功能.主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.syncronized会自动释放锁,而Lock一定要程 ...

  5. 对比synchronized与java.util.concurrent.locks.Lock 的异同

    主要区别 1.Lock能完成几乎所有synchronized的功能,并有一些后者不具备的功能,如公平锁.等待可中断.锁绑定多个条件等: 2.synchronized 是Java 语言层面的,是内置的关 ...

  6. 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?

    Lock 是 Java 5 以后引入的新的 API,和关键字 synchronized 相比主要相同点: Lock 能完成 synchronized 所实现的所有功能:主要不同点:Lock 有比 sy ...

  7. (面试题)synchronized 和 java.util.concurrent.locks.Lock 的异同

    主要相同点: Lock 能完成 synchronized 所实现的所有功能: 主要不同点: Lock 有比 synchronized 更精确的线程语义和更好的性能. synchronized 会自动释 ...

  8. 【Java面试题】28 简述synchronized和java.util.concurrent.locks.Lock的异同 ?

    主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一定要 ...

  9. 简述synchronized和java.util.concurrent.locks.Lock的异同

    1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...

随机推荐

  1. LeetCode215. 数组中的第K个最大元素

    215. 数组中的第K个最大元素 问题描述 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 示例 1: 输入: [3 ...

  2. ASP.NET 设计模式分为三种类型

    设计模式分为三种类型,共23类.  一.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.      二.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代 ...

  3. Emit生成特定接口的类

    参考 动态生成类 http://www w2bc com/Article/44799 http://www.cnblogs.com/yingql/archive/2009/03/24/1420914. ...

  4. self_vue@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`

    解决方案: 1.试一下 卸载npm uninstall webpack-dev-server,在安装这个npm i webpack-dev-server@2.9.7 2.删除node_modules目 ...

  5. [转] 在body中没有元素把高度撑开的情况下,设置全屏

    [From] https://segmentfault.com/q/1010000006182839 html,body { margin:; padding:; min-height: 100vh; ...

  6. 动态规划算法解析网页中的内容 JavaScript

    function getInfo(html){ //去掉注释 html=html.replace(/<!--.+?-->/g,"") var arrP=[] var r ...

  7. b站弹幕的爬取以及词云的简单使用

    一.B站弹幕的爬取 1.分析发现,其弹幕都是通过list.so?=cid这个文件加载出来的,所以我们找到这个文件的请求头的请求url, 2. 打开url就能看到所有的评论 3. 上代码,解析 #!/u ...

  8. centos7.4 上面 docker 启动 cAdvisor 报错问题解决

    2018-10-29 docker 启动 cAdvisor,操作系统CentOS7: docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/v ...

  9. aoj0121

    一.题意:类似于华容道,输入是8个数字,输入虽然是一行,但实际是以两行的方式操作的.0表示空位,别的相邻数字可移动到该位置上.求最少移动步骤得到指定的状态. 二.思路:这题可以用BFS来解决.因为在每 ...

  10. 可编辑的el-table表格,结合input输入,upload文件上传的表格

    最近整理了一下,table表格的编辑状态,把一般表格里需要输入的类型都放进来了,实现的功能如图     这里面的input输入框没什么好说的,绑定对应的值就可以,要注意的是组件上传的upload,这个 ...