# 锁类Lock 和 Synchronized#
来源:互联网 发布:js 高精度计算 编辑:程序博客网 时间:2024/06/06 07:39
# 锁类Lock #
对比:
**1)synchronized (类,当做锁,多个线程要是同一个类)
{同步代码;}**
例子: package Lock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class LockTest { public static void main(String[] args) { output out = new output(); 开启两个线程,输出一个字符串,一个字符一个字符输出 new Thread(new Runnable() { public void run() { out.show("abcdef"); } }).start(); new Thread(new Runnable() { public void run() { out.show("123456"); } }).start(); } } class output { public void show(String str) { char[] x = str.toCharArray(); while (true) { synchronized (output.class) { //同步代码 for (int i = 0; i < x.length; i++) { System.out.print(x[i]); } System.out.println(); // } } }}
2)try {同步代码块} finally {lock.unlock();}
为什么用try:因为如果在代码里报错的话,这个锁的钥匙就永远被带走了,这个段代码也永远锁死了,所以用finally
package Lock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class LockTest { public static void main(String[] args) { output out = new output(); new Thread(new Runnable() { public void run() { out.show("abcdef"); } }).start(); new Thread(new Runnable() { public void run() { out.show("123456"); } }).start(); } } class output { Lock lock = new ReentrantLock(); public void show(String str) { char[] x = str.toCharArray(); while (true) { //同步代码块 lock.lock(); try { for (int i = 0; i < x.length; i++) { System.out.print(x[i]); } System.out.println(); } finally { lock.unlock(); } // } } }
0 0
- # 锁类Lock 和 Synchronized#
- 锁 synchronized和Lock
- synchronized 和 Lock
- synchronized和Lock
- synchronized和lock
- Lock和synchronized
- Lock和Synchronized简介
- Synchronized和Lock感悟
- lock 和synchronized
- Synchronized和lock机制
- Lock和Synchronized区别
- synchronized 和 Lock
- Lock和synchronized比较
- Lock和Synchronized区别
- synchronized和lock区别
- Lock和synchronized详解
- Lock 和Synchronized 区别
- synchronized 和 lock 区别
- # 定时器Timer类定时器Timer类 #
- virtualbox中centos系统配置nat+host only上网
- Core Java笔记(一)
- Jupyter使用积累
- Vue2.0 新手完全填坑攻略—从环境搭建到发布——Jinkey 原创
- # 锁类Lock 和 Synchronized#
- ARCGIS中Python实现按属性字段批量掩膜提取
- 用 Docker 构建、运行、发布来一个 Spring Boot 应用
- java中用Io流实现文本复制(按行读按行写)
- nodejs NPM教程(yiibai)
- 微信小程序开发框架搭建
- 同步辅助类CyclicBarrier
- Mongodb的应用场景
- oracle11g broker主库异常断电后的测试