鱼C论坛

 找回密码
 立即注册
查看: 2975|回复: 0

[学习笔记] Java多线程05

[复制链接]
发表于 2017-6-16 22:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Java静态类


一般情况是不可以用static修饰类   通常static修饰的是内部类

成员内部类:在一个类中创建另一个类
                      可以为静态(用static关键字修饰)  也可以为非静态
静态内部类:定义:
                    可定义静态成员、静态方法
                    引用:
                     只可以引用外部类的静态成员方法、静态成员变量
                    创建:
                      创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上,也就是创建静态内部类的对象时,不需要其外部类的对象

非静态内部类:定义:
                       不可定义静态方法,可通过(同时有static final )定义静态成员变量
                       引用:
                       可随意访问外部类的成员变量与成员方法(private也行)
                      创建:
                       非静态内部类的实例一定要绑定在外部类的实例中

内置类与静态内置类
在内置类中当两个同步方法使用不同的锁时,运行结果为异步

New静态内置类时,需要在主类中导入该静态内置类
Synchronized(object)锁住的是对象   
当synchronized锁住静态内置类的对象后,其他线程只能以同步的方式调用  
         该静态内置类的方法
当锁对象为String类型时,改变String值便是一个新锁  (其他线程必须等String值改变后在运行,才能得到锁)

利用多线程可解决同步死循环   例如 while死循环

Volatile关键字与死循环
Volatile作用:强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值

当JVM被设置为-serve模式时  为了线程运行的效率,线程会从私有堆栈中取得数据,但是当循环判断值的更新却在公共堆栈的数据中,造成死循环
12.png

通过关键字volatile关键字解决问题

13.png
让线程强制从公共内存中读取变量值
使用volatile关键字增加了实例变量在多个线程之间的可见性


评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 04:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表