随笔分类 - java基础
基础很重要
摘要:垃圾收集器与内存分配策略 Java运行时的各部分中,程序计数器、虚拟机栈、本地方法栈这三个区域随线程的产生而产生,而线程的消失而消失;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会有JIT编译器进行一些优化,
阅读全文
摘要:HashMap的简介(本文以JDK1.8为例) HashMap是jdk中util包的一个容器,它以key-value的形式来存储一个映射关系。常见的用法如下: HashMap hashMap = new HashMap(10); hashMap.put("key","value1"); String
阅读全文
摘要:前言 多线程的编程中,要想熟练的运用线程来完成某些任务,那么就需要了解线程的运行状态以及在必要的时候合理的对线程进行中断,这样才能够达到提高程序的执行效率。 线程的状态 线程的状态可以从Thread类的源码中看出,它包括六种状态:新建状态(NEW)、可运行状态(RUNNABLE)、阻塞状态(BLOC
阅读全文
摘要:Java内存模型 (JMM)和JVM运行时内存的区别 JVM运行时内存 Java运行时内存模型,描述了Java程序代码在运行时,一次执行单个语句或者表达式时(即通过单个线程执行时)不同类型的变量、引用、对象、类等等的一些信息的存储规范。 Java内存模型 描述了多个线程运行时的语义规范,比如多个线程
阅读全文
摘要:前言 在Java并发编程中,有一个关键字是volatile,它的英文意思是“易变的,不稳定的,无定型的”。那么在Java编程中,被volatile修饰的变量,它能够保证当前变量的可见性,从而使所有访问该前变量的线程都能够及时的获取到当前变量的最新值,从而保证它的可见性。那么它是怎么做到的呢? vol
阅读全文
摘要:前言 Java中的锁都是基于对象的锁,Java中的每一个对象都可以作为一个锁,我们常听到类锁其实也是对象锁,因为Java类只有一个class对象(一个Java类可以有多个实例对象,多个实例对象共享这一个Java类)。之所以有锁的概念,都是因为在多个线程在访问一个共享变量资源时会发生一些不可控制的问题
阅读全文
摘要:前言 对于Java程序员来说,在虚拟机自动内存管理的机制下,不需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出的问题。不过,如果在编写程序时没有合理的创建对象,就会造成内存泄漏或者溢出这样的问题,如果不了虚拟机内存的区域划分以及创建的对象时虚拟机对它的内存分配
阅读全文
摘要:如何运行一个.java文件 在我们刚学习java 程序的时候可能都用命令来运行过一个最简单的hello world的java程序。它的步骤如下,很简单。 在hello文件夹下创建一个HelloWorldDemo.java文件,编写Java程序。程序如下, //这里一定不要有package的包引入,否
阅读全文
摘要:#线程封闭 数据被封闭在各自的线程之中被线程私有,不需要进行同步,这种通过数据封闭在线程中而避免使用同步的技术成为线程封闭。 它具体的体现有:ThreadLocal、局部变量(也叫做栈封闭,它是线程所固有的特点,局部变量位于该线程执行的虚拟机栈中) 示例代码: /** * * ThreadLocal
阅读全文
摘要:线程间的通信可以分为文件共享、网络共享、共享变量、JDK提供的线程协调API(suspend/resume、wait/notify、park/unpark),今天我们着重来讲一下JDK提供的线程协作的API。 suspend/resume suspend/resume方式的线程间协作时容易产生死锁,
阅读全文
摘要:前言 java语言的学习是一个体系,所以如果想要对java的编程有一个很精通的一个掌握,它离不开很多基础的知识点,比如JVM的原理、java多线程并发编程、数据结构等等。所以我这里对我学习的java的课程进行定期的总结,来记录我学习java的一些想法和心得。也希望能通过我的这些分享,给需要的学习某方
阅读全文

浙公网安备 33010602011771号