Java笔记 - 多线程-同步函数
来源:互联网 发布:淘宝会员号 编辑:程序博客网 时间:2024/05/17 23:41
synchronized写在函数的前面
class Bank{private int sum;public synchronized void add(int n){sum = sum + n;try{Thread.sleep(10);}catch(Exception e){}System.out.println("sum=" + sum);}}class Cus implements Runnable{private Bank b = new Bank();public void run(){for(int x=0; x<3; x++){b.add(100);}}}public class BankDemo {public static void main(String[] args){Cus c = new Cus();Thread t1 = new Thread(c);Thread t2 = new Thread(c);t1.start();t2.start();}}
同步函数使用的锁是this
class Ticket implements Runnable{private int tick = 100;boolean flag = true;public void run(){if(flag){while(true){synchronized(this){if(tick>0){try{Thread.sleep(10);}catch(Exception e){};System.out.println(Thread.currentThread().getName()+"...code:"+tick--);}}}}else{while(true){show();}}}public synchronized void show(){if(tick>0){try{Thread.sleep(10);}catch(Exception e){System.out.println(Thread.currentThread().getName()+"..show.."+tick--);}}}}public class staticMethodDemo {public static void main(String[] args){Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);t1.start();t2.start();}}
如果同步函数被静态修饰后,使用的锁是什么?
通过验证,发现不是this,因为静态方法中也不可以定义this。
静态进内存是,内存中没有本类对象,但是一定有该类对应的字节码文件对象。
类名.class 该对象的类型是Class
静态的同步方法,使用的锁是该方法所在类的字节码文件对象。 类型.class
class Ticket implements Runnable{private static int tick = 100;boolean flag = true;public void run(){if(flag){while(true){synchronized(Ticket.class){if(tick>0){try{Thread.sleep(10);}catch(Exception e){};System.out.println(Thread.currentThread().getName()+"...code:"+tick--);}}}}else{while(true){show();}}}public static synchronized void show(){if(tick>0){try{Thread.sleep(10);}catch(Exception e){System.out.println(Thread.currentThread().getName()+"..show.."+tick--);}}}}public class staticMethodDemo {public static void main(String[] args){Ticket t = new Ticket();Thread t1 = new Thread(t);Thread t2 = new Thread(t);t1.start();t2.start();}}
0 0
- Java笔记 - 多线程-同步函数
- Java 多线程 静态同步函数
- JAVA多线程静态同步函数
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- Java---14---多线程---synchronized 同步函数
- java 多线程详解三 同步函数
- java多线程详解三 同步函数
- java多线程-同步函数的锁
- 《黑马程序员》java笔记->多线程,同步锁
- java 多线程学习笔记之 线程同步
- JAVA多线程 <二>同步函数和同步代码块
- Java多线程线程、同步代码块、同步函数、死锁
- java 多线程 同步函数 。同步函数的锁 和 静态同步函数的锁
- 多线程四(同步函数)
- 多线程.同步函数
- 同步函数多线程
- 多线程同步函数
- 多线程 同步笔记
- 流处理系统Heron——architecture
- 【DLX】【vijos P1345】【codevs1174】舞蹈链(Dancing Links)——数独问题
- 数据类型
- 常用sql语句
- Class.getResourceAsStream() VS. ClassLoader.getResourceAsStream()
- Java笔记 - 多线程-同步函数
- 怎样开发一款区块链
- 经典书单 —— 理工科篇
- 110.iOS10新特性,适配教程,XCode8新特性
- Shrio 入门系列 三 (授权与Spring整合)
- MyEclipse英文注解
- [LeetCode-349] Intersection of Two Arrays(java)
- XCode8.0下面出现的警告——xx is missing from working copy的解决办法
- 倍增笔记♂