上一篇博文JAVA之synchronized认识介绍了synchronzied,在JDK1.5之前,要想实现资源的互斥,只能使用synchronized,JDK1.5提供了Lock类,该类可替代synchronzied。本文只是简单认识Lock的使用,下面例子仍然是拿上一篇博文中的例子进行修改.
package thread;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockTest {
public static void main(String[] args) {
final Output output = new Output();
// 启动两个线程,都是用output对象中的output方法进行打印
new Thread(new Runnable() {
@Override
public void run() {
output.output("weijianfei");
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
output.output("dreambroken");
}
}).start();
}
}
class Output {
Lock lock = new ReentrantLock();
public void output(String s) {
lock.lock();
try {
for (int i = 0; i < s.length(); i++) {
try {
Thread.sleep(100);// 模拟处理一个字符需要100毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(s.charAt(i));
}
System.out.println();
} catch (Exception e) {
} finally {
lock.unlock();
}
}
}
运行结果
weijianfei
dreambroken
本文介绍如何在Java中使用Lock类替代synchronized关键字实现资源互斥,并通过实例代码展示其应用。
170万+

被折叠的 条评论
为什么被折叠?



