多线程
文章平均质量分 69
cc斌斌
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Monitor 和 synchronized 关键字
Monitor 和 synchronized 关键字首先引入对象头的概念因为 Java面向对象的思想,在jvm中需要大量的存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象的功能,这些标记字段组成了对象头Java对象在虚拟机的组成为 Java对象 = 对象头 + 示例数据 + 对象填充其中对象头中用于存储运行时状态的叫做 Mark Word,另一部分是元数据指针以64为 虚拟机为例其markword 的格式和状态如下MonitorMonitor 被翻译为监原创 2022-02-22 21:19:39 · 508 阅读 · 0 评论 -
方法上的锁判断之线程八锁
线程八锁@Slf4j(topic = "c.Number")class Number{ public synchronized void a() { log.debug("1"); } public synchronized void b() { log.debug("2"); }}public static void main(String[] args) { Number n1 = new Number(); new Thread(()->{ n1.a(); }).star原创 2022-02-22 18:34:55 · 251 阅读 · 0 评论 -
线程状态转换
线程的六种状态new : 线程刚被创建,还没有调用start(),方法RUNNABLE 当调用了start(),但是在Java层面RUNNABLE 覆盖了 操作系统层面的 【可运行状态,运行状态,阻塞状态】,由域BIO导致的线程阻塞,在Java这里无法区分,仍然认为时可运行BLOCKED,WAITING,TIMED_WAITING 都是JavaAPI层面的堆阻塞状态的细分。TERMINATED 当线程代码运行结束线程状态转换1.NEW -> RUNNABLE当一个新创建的线程调用原创 2022-02-22 16:23:50 · 266 阅读 · 0 评论 -
Thread一般方法
Thread 中的方法start() 和 run()直接调用run() ,则仅仅是在主线程中调用了对象的run方法start方法,在start方法中会调用start0() 这个方法,这个是native 修饰的底层方法,调用会,jvm会进行资源分配,然后进行run() 方法的回调,个人认为新的线程就是在 调用start0() 方法是产生的。sleep 和 yieldsleep调用sleep() 方法,会让当前线程从 RUNNING 进入 Timed Waiting 状态(阻塞)其他线程可以原创 2022-02-19 18:01:33 · 560 阅读 · 0 评论 -
线程的创建以及Thread与Runnable的关系(个人理解)
线程和进程线程一个进程之内可以分为一到多个线程一个线程就是一个指令流,将指令流中的一条条指令交给cpu去执行,Java中,线程作为最小的调度单位,进程作为最小的资源分配的单位,在windows 中进程只是作为线程的容器首先一个线程作为进程的子集,一个进程可以分为一个或者多个线程,而线程本身是指令流,将指令交给cpu 去执行,对于Java来讲,线程是最小的 调度单位 ,进程是最小的 资源调度单位,进程和线程的对比进程基本上相互独立,而线程作为进程的一个子集进程拥有共享的资源,比如:存储空原创 2022-02-19 16:34:22 · 923 阅读 · 0 评论
分享