import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockTest {
/**
* @param args
*/
public static void main(String[] args) {
init();
}
private static void init() {
final Outputer outputer = new Outputer();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
// outputer.output2("1111");
outputer.output("1111");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
// outputer.output2("2222");
outputer.output("2222");
}
}
}).start();
}
}
/**
* Lock 更加面向对象
* @author ETHAN
*
*/
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();
}
}
//不加锁
public void output2(String name) {
int len = name.length();
for(int i=0;i<len;i++) {
System.out.print(name.charAt(i));
}
System.out.println();
}
public void output3(String name) {
int len = name.length();
synchronized (Outputer.class) {
for(int i=0;i<len;i++) {
System.out.println(name.charAt(i));
}
System.out.println();
}
}
}
java 之 Lock 同步锁学习示例
最新推荐文章于 2022-04-12 15:37:28 发布