Java Synchronized 略解
来源:互联网 发布:vb.net gridview 编辑:程序博客网 时间:2024/05/17 14:16
同步条件 ①两个或两个以上 线程对象 用同意堆栈 ② synchronize 锁同一对象
synchrozed (默认)锁的对象是 this
代码验证 :同步条件
class Ticket implements Runnable{boolean flag = true;private int tick = 1000;Object object = new Object();public void run() {// TODO Auto-generated method stubif(flag){while(true){synchronized (object) { //synchronized 锁object对象if(tick > 0){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + "...show..." + tick--);}}}}else{while(true){show();}}}public synchronized void show() {if(tick > 0){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + "...sale..." + tick--);}}}public class Hello {public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);t1.start();try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}t.flag = false;t2.start();}}
打印结果 会出现:Thread-0...show...0
class Ticket implements Runnable{boolean flag = true;private int tick = 1000;Object object = new Object();public void run() {// TODO Auto-generated method stubif(flag){while(true){synchronized (this) {if(tick > 0){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + "...show..." + tick--);}}}}else{while(true){show();}}}public synchronized void show() {if(tick > 0){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName() + "...sale..." + tick--);}}}public class Hello {public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);t1.start();try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}t.flag = false;t2.start();}}
打印结果 :Thread-0...show...1 到此为止
0 0
- Java Synchronized 略解
- java之synchronized略谈
- Java中synchronized,sleep()和wait()的初略认知
- java集合框架实现略解
- Memcached-java略谈
- java 按值传递与引用传递 略解
- Java synchronized
- Java synchronized
- java synchronized
- java synchronized
- java synchronized
- java synchronized
- Java synchronized
- java synchronized
- java synchronized
- java synchronized
- java synchronized
- java synchronized
- UIScrollView实现不全屏分页的小技巧
- Eclipse 安装最新SVN插件
- VB.NET创建/修复/压缩/备份/恢复ACCESS数据库
- 算法学习之java实现快速排序
- logback MDC(Mapped Diagnostic Context)与分布式系统的跟踪系统
- Java Synchronized 略解
- linux-挂载数据
- 自我的学习反思
- Ruby Programming
- csu 1101
- 35. Search Insert Position
- Android混淆之ProGuard
- 【MFC-5】VS2010编程之文件对话框
- Hadoop+HBase+ZooKeeper分布式集群环境搭建