java properties 锁_Java学习 Properties Collections Thread 线程状态 线程安全

Properties

该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱离程序本身去修改相关的变量设置。

就像在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。

key和value都是String类型的数据

常作于配置文件使用

创建一个资源文件夹source Folder-->新建File文件 db.properties-->编写-->读取

Collections

Collections 和 Arrays 很像

操作容器的工具类

Collection 和 Collections之间的区别

void sort(List)//对 List 容器内的元素排序,按照升序进行排序

void shuffle(List) //对 List 容器内的元素进行随机排列

void reverse(List) //对 List 容器内的元素进行逆续排列

void fill(List, Object) //用一个特定的对象重写整个 List 容器

int binarySearch(List, Object)//采用折半查找的方法查找特定对象

HashMap线程不安全的问题:

1.Hashtable

2.synchronizedMap(Map m) 返回由指定映射支持的同步(线程安全的)映射。

3.java.util.concurrent 类 ConcurrentHashMap 线程安全的哈希表 ---推荐

ArrayList

HashMap

必须会灵活使用

Thread

线程: Thread

多线程: 多任务,多条路径同时执行

进程:对系统而言指任务|程序,每个进程都有自己独立的代码和运行空间,进程之间切换消耗大,进程是资源分配的最小单位

线程:一个进程包含1~n多个线程 ,一类共享进程的资源,每个线程都是运行栈和程序计数器,线程之间切换消耗小,轻量级的进程,cpu调用的最小单位

进程和线程都存在的状态: 新生 就绪 运行 阻塞 终止

学习的重点:

1.多线程的开启方式 ***

2.线程状态 **

3.线程安全 ***

一个cpu统一时刻只能做一件事,线程之间切换快,达到多线程的效果

创建线程:

1.继承Thread类,重写run()方法

run()定义线程体

start() 开启线程

2.实现Runnable接口,重写run()方法 ---推荐

3.实现Callable接口,重写call()方法:了解

开启线程的第二种方式:

实现Runnable接口,重写run()方法+start()

优点:

避免单继承的局限性

实现资源共享

第三种开启线程的方式

实现Callable接口 + 重写call()方法

1) call() 可以有返回值

2) call() 抛出异常

线程状态

新生: new Thread()

就绪: start(),就绪状态的线程会进入到就绪队列中,等待cpu调度

运行: 当cpu非配时间片给线程,这个线程就会进入运行状态开始运行

阻塞: sleep()...

终止: 线程结束

注意:如果一个线程进入阻塞状态,阻塞状态解除也无法直接进入运行状态,会进入就绪状态

如果一个线程已经死亡,无法恢复就算重新开启线程也不是原来的哪一个

如果进入终止状态:

1)正常执行完毕2)添加外部表示判断***3)destroy() | stop()

如果进入就绪状态:

1)start()

2)阻塞状态解除

3)yield()

4)线程切换

如果进入阻塞状态:

1)sleep()

2)wait()

3)join()

4)IO 操作

sleep(ms) 线程睡眠.. (抱着资源睡觉)

1)模拟网络延迟

2)放大发生问题的可能性

线程休眠期间会进入阻塞状态,让出cpu的资源,但是不会释放对象锁|资源

yield() 礼让线程

会让出cpu的资源,让线程直接进入就绪状态

join()方法 插队

被插队的线程进入阻塞状态

获取线程状态的方法

getState() 返回线程的枚举类型状态值

线程的优先级: 1~10 1最小 10最大 默认5

int getPriority() 返回线程的优先级。

void setPriority(int newPriority) 更改线程的优先级。

无法控制线程执行顺序,但是可以增加|讲课执行的可能性

线程安全

线程安全:当多线程,同时操作,同一份资源的时候有可能存在线程不安全问题

控制线程安全: 锁-->同步锁 synchronized

同步方法:

静态方法

成员方法

同步块

synchronized(this,类,资源){

内容...

}

注意:

锁要锁不变的内容,才能锁住

锁的范围太大,效率低,锁的范围太小,锁不住

双重锁 double check: 同步最小的范围,提高效率

单例:懒汉式线程不安全

锁静态方法相当于锁类,可以使用同步块

三种锁的:

控制线程安全:

锁类: 锁住了类的所有内容-->锁住了这个类的所有对象,锁住了一个对象中的所有资源,如果只想要锁一个对象建议去所对象

锁对象:每个对象只有一把锁,对象锁释放,别人就获取不了

对象中的所有资源都锁住了,只想要锁某一个资源,推荐锁资源

锁资源: 成员属性

自定义引用数据类型的对象地址永远不变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值