Java 基础 (一)

Java 常用类

String、StringBuilder 、StringBuffer
  • String 不可变字符序列

    Sting str = "";
    for(int i=0;i<5000;i++){
    	str = str + i; //相当于创建了10000个对象,大大影响了性能
    }
    
  • StringBuilder 可变字符序列,线程不安全

  • StringBuffer 可变字符序列,线程安区

参考文章:StringBuilder和StringBuffer的区别

DateFormat和SimpleDateFormat
  • 把时间对象按照“格式字符串指定的格式“转换响应的字符串

    DateFormat df = new SimpleDataFormate("yyyy-MM-dd hh:mm:ss")
    String str = df.format(new Date());
    
  • 把字符串按照“格式字符串指定的格式“转换响应成时间对象

    DateFormat df2 = new SimpleDataFormate("yyyy年MM月dd日 hh时mm分ss秒");
    Date date = df2.prase("1984年10月12时 10时45分59秒");
    
Enun类

枚举类的实例对象只能在eunm里面体现

参考文章:Java 枚举(enum) 详解7种常见的用法

Java 容器(集合)

在这里插入图片描述

HashMap源码解析:HashMap源码详解一篇就够

Java 泛型

Java IO

在这里插入图片描述

  • 节点流
  • 装饰流(处理流)
  • 装饰者模式

参考文章:节点流和装饰流

Commons组件
  • 封装了常用的方法

Java 多线程

线程状态
  • new_新生:进入新生状态
  • start:进入就绪状态
  • sleep_暂停:由运行态变为阻塞态,资源不会被释放
  • yield_礼让:由运行态直接变为就绪态
  • join_插队:阻塞主线程,插队线程先执行

在这里插入图片描述

实现方法
  • 继承Thead
  • 实现Runnable接口
    • lambda表达式
  • Callable和Future
代理模式
  • Runnable 接口实现类的启动方式
  • 通过代理角色代理真实角色实现一些方法
Synchronized 线程同步
  • 同步块:synchronized (obj) { },obj称为同步监视器

    • obj可以是任何对象,但是推荐使用共享资源作为同步监视器
  • 同步方法

    • 同步方法中无需指定同步监视器,因为同步方法的同步监视器是this既同步对象本身,或class既类的模子
  • 同步监视器的执行过程

    • 第一个线程的访问,锁定同步监视器,执行其中的代码
    • 第二个线程访问,发现同步监视器被锁定,无法访问
    • 第一个线程访问完毕,解锁同步监视器
    • 第二个线程访问,发现同步监视器未锁,锁定并访问
  • 性能分析

  • 死锁:过多的同步可能造成相互不释放资源,从而相互等待,一般发生于同步中持有多个对象的锁

    • 避免:不要在同一个代码块中,同时持有多个对象的锁
  • 生产者消费者

    • 管程法:借助缓冲区
    • 信号灯法:借助标志位
  • 定时调度

    • Timer() 和 TimerTask()
    • quartz
  • HappenBefore:指令重排

  • volitale:用于保证数据的同步,也就是可见性。

ThreadLocal
  • ThreadLocal能够放一个线程级别的变量,其本身能够被多个线程共享使用,并且又能够达到线程安全的目的
可重入锁
  • 锁作为并发共享数据保持一致性的工具,大多数内置锁都是可重入的,也就是说,如果某个线程试图获取一个已经由它自己持有的琐时,那么这个请求会立即成功,并且会将这个锁的计数值加1,而当线程退出同步代码块时,计数器将会递减,当计数值等于0时,锁释放。如果没有可从如锁,在第二次企图获得琐时,将会进入到死锁状态。
原子操作

线程试图获取一个已经由它自己持有的琐时,那么这个请求会立即成功,并且会将这个锁的计数值加1,而当线程退出同步代码块时,计数器将会递减,当计数值等于0时,锁释放。如果没有可从如锁,在第二次企图获得琐时,将会进入到死锁状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值