synchronized 与 Lock锁 lock是synchronized的升级版 wait 时记得使用while判断,以免虚假唤醒 其中lock需要手动释放 lock的等待唤醒对应 await(),single() lock可以设置公平锁 可以拥有多个condition去await和single
线程状态 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread.
线程池的使用 线程并发时加锁,一般需要锁住被修改的变量 线程池使用案列: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
多线程注意点 Thread.sleep() 1.不对释放对象锁 2.线程异常时抛中断异常 Thread.yield() 1.重新调度CPU,CPU有一半的概率还是调度自己 Thread.join() 自己线程执行了其他线程的join方法,让join的线程先走 setPriority()设置优先级,默
多线程之实现Calladle接口 需要使用线程池,ExecutorService的submit执行 public class CallableClient implements Callable<Boolean> { private String name; private Str
GC回收机制 1.引用计数法 当堆里面的对象被引用了,这计数器+1,引用失效了则-1,扫描Eden Space中的对象,干掉引用等于0的对象 缺点:需要维护计数器 JVM一般使用可达性分析算法判断是否可以被回收 可达性分析算法:GC Root 的对象为起点,从这些节点向下搜索,类似就是遍历树,没有在
OOM public static void main(String[] args) { long mix = Runtime.getRuntime().maxMemory(); long total = Runtime.getRuntime().totalMemor
类实例的过程 双亲委托机制,类被类加载器加载初始化时,一步一步向上委托寻找,在一级一级往乡下找 sun.misc.Launcher$AppClassLoader@73d16e93 应用本身编译的class文件 sun.misc.Launcher$ExtClassLoader@15db9742 \jr
JVM JVM运行在操作系统之上 Jvm的结构体系 沙箱安全机制 堆:存放正在的对象 栈:存放对象地址,8个基本数据结构,实例方法,通过栈帧存着 方法区:存放 static,final,Class,常量池,被线程共享,属于堆 native Method: 声明了一些c++,c的一些方法,通过本地方法
类的加载 1.加载 当程序引用到类时,会把class文件加载到内存中 2.链接, 为static变量赋默认的初始值 讲常量放入常量池 3.初始化 合并静态代码块与静态变量赋值语句 调用静态代码块里面的内容 注意:引用常量不会进行初始化步骤 public class Client { publ
这就是我
文章
分类
访问量
建站天数
标签目录
最近评论