专题一:Java高性能编程专题
「南小鸟」
love live forever!
展开
-
1.1.1 线程状态
从线程的源码中,可以发现,线程一共有 6 种状态;6个状态定义:java.lang.Thread.State1、New:尚未启动的线程状态,即刚new出来线程,尚未调用start()方法。2、Runnable:可运行线程的线程状态,等待CPU的调度。3、Blocked:线程阻塞等待监视器锁定的线程状态;比如说线程处于synchronized同步代码块或方法中被阻塞。4、Waiti...原创 2019-08-13 16:29:35 · 81 阅读 · 0 评论 -
1.1.2 线程中止
线程中止:错误的中止:使用线程的stop(),线程stop()方法会强制性中止,破坏线程安全;正确的中止:(1)使用interrupt()方法。 如果目标线程在调用Object类的wait()、wait(long)、或者wait(long,int)方法、join()、join(long,int) 或sl...原创 2019-08-21 18:03:19 · 110 阅读 · 0 评论 -
1.1.3 线程通讯
1、通讯方式 要想实现多个线程之间的协同,如:线程执行的先后顺序、获取某条线程的执行结果等等。 涉及到线程之间的相互通讯,分为如下几类: 1) 文件共享 2) 网络共享 3) 共享变量 4) JDK提供的线程协调API 细分为:suspend()/resume()、wait()/notify(...原创 2019-08-27 11:34:20 · 158 阅读 · 0 评论 -
1.1.4 线程封闭
1、线程封闭的概念 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候都要用到共享数据, 所以线程封闭的概念就提出来了。 数据都被封闭在各自的线程之中,就不需要同步;这种通过将数据封闭在线程中而避免使用同步的 技术称为线程封闭。 线程封闭的具体体现有:ThreadLocal、局部变量。2、ThreadLocal...原创 2019-08-27 14:38:04 · 98 阅读 · 0 评论 -
1.1.5 线程池原理
为什么要用线程池?线程是不是越多越好? 1、线程在Java中是一个对象,更是操作系统的资源,线程的创建、销毁都需要时间。 如果创建时间+销毁时间>执行任务的时间 就很不划算。2、Java对象占用堆内存,操作系统线程占用系统内存,根据JVM规范,一条线程默认最大栈大小为1M, 这个栈空间是需要从系统内存中分配的。线程过多会消耗很多的内存。3、...原创 2019-08-27 16:06:24 · 162 阅读 · 0 评论 -
1.1.6 JVM内存模型详解
目录一、什么是Java内存模型?二、Java内存模型 vs JVM运行时数据区三、了解CPU的指令重排四、可见性问题五、volatile关键字六、线程间操作的定义七、同步的规则定义八、Happens-before先行发生原则九、final 在JVM 中的处理十、Word Tearing 字节处理十一、double 和 long 的特殊处理一、什么是J...原创 2019-09-18 12:59:17 · 127 阅读 · 0 评论