黑马程序员_Java基础[27]_静态同步函数
2014-05-04 09:10
190 查看
----------
android培训 、java培训
、期待与您交流! ----------
/*
* 【【静态同步函数】】
* 静态同步函数,对象使用的【不是this】
* 通过验证,发现不是this 因为静态方法中,不可以定义this。
*
* 静态进内存的时候,内存中没有本类对象,但是,一定有该类对应的字节码文件对象
* 类名.class 该对象的类型是: Class
*
* 静态的同步函数对象是,该类对应的字节码文件对象 就是 类名.class
*/
class Ticket5 implements Runnable{//方式二
private static int tick=100;
boolean flag=true;
public void run(){
if(flag){
while(true){
//synchronized(this){//this 不知道为什么我的程序用this其实没有出现过0
synchronized(Ticket5.class){//更换为Ticket5.class 不在出现0 线程安全。
if(tick>0){
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"买票"+(tick--));
}
}
}
}
else{
while(true)
show();
}
}
public static synchronized void show(){
if(tick>0){
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"show"+(tick--));
}
}
}
public class D_Th_test6{
public static void main(String[] args) {
Ticket4 t=new Ticket4();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.start();
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
t.flag=false;
t2.start();
}
}
-----------------------------------------------------------------------------------------------
package _Day11;
/*
* 返回来再看看 单列设计模式
*
* 死锁: 同步中嵌套同步
* 设计时一定要避免死锁。
*/
//饿汉式
/*
class Single{
private static final Single s=new Single();
private Single(){}
public static void Single getInstance(){
return s;
}
}
*/
//懒汉式
class Single{
private static Single s=null;
private Single(){}
public static Single getInstance(){
if(s==null){
synchronized(Single.class){
if(s==null)
s=new Single();
}
}
return s;
}
}
public class D_Th_test7 {
}
----------
android培训、 java培训
、期待与您交流!----------
黑马官网: http://edu.csdn.net/heima
android培训 、java培训
、期待与您交流! ----------
/*
* 【【静态同步函数】】
* 静态同步函数,对象使用的【不是this】
* 通过验证,发现不是this 因为静态方法中,不可以定义this。
*
* 静态进内存的时候,内存中没有本类对象,但是,一定有该类对应的字节码文件对象
* 类名.class 该对象的类型是: Class
*
* 静态的同步函数对象是,该类对应的字节码文件对象 就是 类名.class
*/
class Ticket5 implements Runnable{//方式二
private static int tick=100;
boolean flag=true;
public void run(){
if(flag){
while(true){
//synchronized(this){//this 不知道为什么我的程序用this其实没有出现过0
synchronized(Ticket5.class){//更换为Ticket5.class 不在出现0 线程安全。
if(tick>0){
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"买票"+(tick--));
}
}
}
}
else{
while(true)
show();
}
}
public static synchronized void show(){
if(tick>0){
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"show"+(tick--));
}
}
}
public class D_Th_test6{
public static void main(String[] args) {
Ticket4 t=new Ticket4();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.start();
try{
Thread.sleep(10);//【a】
}
catch(Exception e){}
t.flag=false;
t2.start();
}
}
-----------------------------------------------------------------------------------------------
package _Day11;
/*
* 返回来再看看 单列设计模式
*
* 死锁: 同步中嵌套同步
* 设计时一定要避免死锁。
*/
//饿汉式
/*
class Single{
private static final Single s=new Single();
private Single(){}
public static void Single getInstance(){
return s;
}
}
*/
//懒汉式
class Single{
private static Single s=null;
private Single(){}
public static Single getInstance(){
if(s==null){
synchronized(Single.class){
if(s==null)
s=new Single();
}
}
return s;
}
}
public class D_Th_test7 {
}
----------
android培训、 java培训
、期待与您交流!----------
黑马官网: http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员_Java基础[26]_线程2、同步代码块、同步函数
- 黑马程序员_Java基础[10]_主函数main、数组、static、静态代码块、帮助文档
- 黑马程序员 java语法基础之函数
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- 黑马程序员_Java基础(流程控制、函数、数组)
- 黑马程序员——java基础语法总汇关键字、常量、变量、语句、函数、数组
- 黑马程序员_java基础(2) 流程控制语句&函数与数组
- 黑马程序员_Java基础2_(语句、函数method和数组Array)
- 黑马程序员——Java基础——程序流程控制、函数操作
- 黑马程序员---Java基础总结---语句、函数、数组
- 黑马程序员---2015.6.14java基础笔记--静态方法--单例
- 黑马程序员_java基础学习笔记之(构造函数&构造代码块&静态代码块)的区别
- 黑马程序员_Java基础_线程基础,创建,同步(单例设计模式的同步),死锁
- 黑马程序员--java语言基础之--流程控制和函数
- 黑马程序员:Java基础总结----静态代理模式&动态代理
- 黑马程序员_JAVA语言基础组成_函数
- 黑马程序员——Java基础语法(二)---流程控制与函数
- “黑马程序员”Java 基础之函数
- 黑马程序员----JAVA基础多线程&同步
- 黑马程序员——Java基础总结(函数、数组)