jdk计数器,j***a计数器
大家好,今天小编关注到一个比较有意思的话题,就是关于jdk计数器的问题,于是小编就整理了2个相关介绍jdk计数器的解答,让我们一起看看吧。
如何确保main()方法所在的线程是Java程序最后结束的线程?
要实现这个情况,必须知道以下几点
1、j***a中线程的结束是由run方法运行完成后自动结束的
2、在main线程(主线程)中,需要得到所有线程的引用。
3、知道jdk提供的CountDownLatch的用法
例子如下:
public static void main(String[] args) throws InterruptedException
{
//CountDownLatch作为计数器纪录有几个线程,例如有2个线程
CountDownLatch latch=new CountDownLatch(2);
Worker worker1=new Worker( latch);
J***a运行时区域,哪些区域是线程私有的?哪些是共有的?
1.程序计数器(线程私有)
程序计数器是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器。
分支、循环、跳转、异常处理、线程处理等基础功能都需要依赖这个计数器完成。
由于J***a虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的。为了线程切换后能恢复到正确的执行位置,
每条线程都需要一个独立的程序计数器,各线程之间的计数器互不影响,独立存储。
1.如果线程正在执行的是J***a方法,计数器记录的正在执行的虚拟字节码指令的地址;
2.如果正在执行的是Native方法,这个计数器的值为空。
程序计数器是唯一一个没有规定任何OutOfMemoryError的区域。
2.J***a虚拟机栈(线程私有)
概述
对于 J***a 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 J***a 程序员把内存控制权利交给 J***a 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。
运行时数据区域
J***a 虚拟机在执行 J***a 程序的过程中会把它管理的内存划分成若干个不同的数据区域。
线程私有的:
- 程序计数器
- 虚拟机栈
- 本地方法栈
线程共享的:
- 堆
- 方法区
- 直接内存 (非运行时数据区的一部分)
到此,以上就是小编对于jdk计数器的问题就介绍到这了,希望介绍关于jdk计数器的2点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.onosokkii.com/post/76594.html