Java多线程 synchronized锁的应用
来源:互联网 发布:淘宝买岛国片怎么搜索 编辑:程序博客网 时间:2024/05/16 10:13
1.当变量被加上synchronized锁,同一时间只允许一个线程在synchronized内的代码块
2.被synchronized修饰的方法,相当于给方法上锁,同一时间只允许一个线程调用该方法
对于非静态方法,synchronized上锁的实际上是 this变量
对于静态方法,synchronized上锁的实际上是 Class变量 比方Demo类,上锁的是Demo.class(表示Class变量)
package test;//4个窗口售票,每个窗口一个线程class Ticket implements Runnable {private static int tick = 100;Object mutex = new Object();public void run() {while (true) {//1.*****当变量(Object对象)被加上synchronized锁,只允许一个线程允许在synchronized内的代码块,如mutexsynchronized (mutex) { if (tick > 0) {try {Thread.sleep(10);} catch (InterruptedException e) { // 复写Runnable的run方法,不提供异常抛出// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName()+ ".....Sale : " + tick--);}}}}public synchronized void show() { //2.*****非静态成员方法,锁this变量if(tick > 0) {try {Thread.sleep(10);} catch (InterruptedException e) { // 复写Runnable的run方法,不提供异常抛出// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName()+ ".....Sale : " + tick--);}}public static synchronized void staticShow() { //3.*****静态成员方法,锁Class变量,这里是锁Ticket.classif(tick > 0) {try {Thread.sleep(10);} catch (InterruptedException e) { // 复写Runnable的run方法,不提供异常抛出// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(Thread.currentThread().getName()+ ".....Sale : " + tick--);}}}public class TicketDemo {public static void main(String[] args) {Ticket t = new Ticket();Thread t1 = new Thread(t); //t为Runnable的实现Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}
0 0
- Java多线程 synchronized锁的应用
- Java多线程的synchronized应用
- java多线程synchronized的应用
- java 多线程锁synchronized
- java多线程和synchronized应用实例
- java多线程synchronized,notify,wait应用实例
- Java多线程 synchronized的用法
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- synchronized 关键字的java应用
- java的多线程安全,ReentrantLock与synchronized锁
- 多线程 锁 synchronized 的使用
- synchronized与static synchronized 的区别、synchronized在JVM底层的实现原理及Java多线程锁理解
- synchronized与static synchronized 的区别、synchronized在JVM底层的实现原理及Java多线程锁理解 (r)
- Java多线程中Synchronized简介和Static Synchronized的区别
- Java多线程中Synchronized简介和Static Synchronized的区别
- java多线程-多线程的安全问题-多线程同步代码块-锁Synchronized
- Java多线程之Synchronized应用在static和非static方法上的区别
- Java多线程----java 对象锁(synchronized/lock)
- dbca.sh
- Zend framework2 - 在视图助手中设置元素样式,对所有元素,如multiCheckbox或错误信息加上自定义样式
- 判断一个数组是否是二叉搜索树的后序遍历(java)
- PHP PDO select语句结果行数计算
- 转--大数据学习路线
- Java多线程 synchronized锁的应用
- 基于js的网页计算器实现
- hdu 3783 ZOJ
- spring框架知识
- Core Animation研究系列 : CATransform3D
- 黑马程序员------2015.6.17java基础--异常--package---线程
- illegal attempt to dereference collection
- PDO query和execute区别
- tcpdump抓包并保存成cap文件