java 之 Lock 同步锁学习示例

来源:互联网 发布:淘宝待收货p图教程 编辑:程序博客网 时间:2024/05/26 02:52
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() {@Overridepublic void run() {while(true) {try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}//outputer.output2("1111");outputer.output("1111");}}}).start();new Thread(new Runnable() {@Overridepublic 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();}}}

原创粉丝点击