- 博客(14)
- 收藏
- 关注
转载 Java线程池的七大参数
java多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释。 线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。下面会对这7个参数一一解释。 一、corePoolSize 线程池核心线程大小 线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会 被销毁,除非设置了allowCoreThreadTimeOut。这里
2021-01-19 16:22:04 166
原创 线程的生命周期及之间的转换.
1、新建状态(new):使用new创建一个线程,仅仅只是在堆中分配了内存。 新建状态下,线程还没有调用 start()方法启动,只是存在一个线程对象而已 Thread t = new Thread(); //这就是t线程的新建状态 2、可运行状态(Runnable):新建状态调用start()方法,进入可运行状态。而这个又分成两种状态,ready和running,分别表示就绪状态和运行状态 就绪状态:线程对象调用了 start() 方法,等待 JVM 的调度,(此时该线程并没有运行) 运行状态
2020-08-04 18:00:53 210
原创 什么是线程安全问题,为什么会出现?怎么解决
线程安全问题: 在操作系统中,进程之间的数据是隔离的。但是注意:如果是一个进程里面多个线程,线程之间是共享一个进程的 在Java中,如果使用多个Thread线程启动同一个Runable的线程对象,此时这些线程会共享Runable对象中的属性,就容易出现线程安全问题(非线程安全问题)。 什么是线程安全的? 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的, 就是线程安全的。 或者说:一个类或者程序所
2020-08-04 17:39:22 421
原创 volatile关键字
Volatile是一个类型修饰符,被设计用来修饰被不同线程访问和修改的变量。在程序设计中,尤其是C语言、C++、C#和Java语言中,使用Volatile关键字声明的变量或对象通常拥有和优化和(或)多线程相关的特殊属性。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化机会。 Volatile的作用:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单来说就是防止编译器对代码进行优化比如如下程序: XBYTE[2]=0x55; XBYT
2020-08-04 17:22:21 102
原创 synchronized和Lock的区别
Synchronized 和 Lock的概念 Synchronized 是Java 并发编程中很重要的关键字,另外一个很重要的是 volatile。Syncronized 的目的是一次只允许一个线程进入由他修饰的代码段,从而允许他们进行自我保护。Synchronized 很像生活中的锁例子,进入由Synchronized 保护的代码区首先需要获取 Synchronized 这把锁,其他线程想要执行必须进行等待。Synchronized 锁住的代码区域执行完成后需要把锁归还,也就是释放锁,这样才能够让其他线.
2020-08-04 17:13:10 206
原创 简述HashMap、Hashtable、ConcurrentHashMap三者间的异同
1、Map的概念 Map用于存储“key-value”元素对,它将一个key映射到一个而且只能是唯一的一个value。 Map可以使用多种实现方式,HashMap的实现采用的是hash表;而TreeMap采用的是红黑树。 2、HashMap 实现了Map接口,实现了将唯一键隐射到特定值上。允许一个NULL键和多个NULL值。非线程安全。 1、jdk1.2提供,线程不安全的 2、初始化的数组长度是16,是2的幂次方 3、jdk8之后,如果链表的长度大于8,这
2020-07-29 09:21:11 126
原创 异常处理
1.异常概述与异常体系结构 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美, 在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避 免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持 通畅等等。 异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不是异常) Java程序在执行过程中所发生的异常事件可分为两类: Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:S
2020-07-25 22:42:14 150
原创 系统常见类
Object类 Object类的作用: — 在Java中,所有的类 ,不管有没有定义其父类,都以Object类 作为直接或间接的父类。 —也就是说,所有的类都继承Object类。 —Object类定义了基本的成员变量和成员函数。 1.对象间的比较 2.将对象转换成字符串toString() 3.线程的等待与通知 4.返回对象所属的类getClass() Class类 在java中,每个class类都有一个相应的class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个
2020-07-25 22:36:59 358
原创 面向对象
Java面向对象学习得三条主线 1.Java类及类的成员:属性、方法、构造器、代码块、内部类 2.面向对象得三大特征:封装性、继承性、多态性、(抽象性) 3.其他关键字:this、super、static、final、abstract、interface、package、import 1.1 面向过程(POP)与面向对象(OOP)概述 二者都是一种思想,面向对象是相对于面向过程而言的。 面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。 面向对象,将功能封装进对象,.
2020-07-19 15:17:43 85
原创 数组中涉及到的常见算法
1.数组中涉及到的常见的算法 数组元素的赋值(杨辉三角、回形数等) 求数值型数组中元素的最大值、最小值、平均数、总和等 数组的复制、反转、查找(线性查找、二分查找等) 数组元素的排序算法(面试题重点) 1.1数组元素的赋值(杨辉三角、回形数等) 测试用例: //使用二维数组打印一个10行的杨辉三角 public class YangHui_Test { public static void main(String[] args) { //1.声明并初始化数组 int[][] arr = n
2020-07-19 15:12:44 252
原创 JAVA-JDK的安装过程
一.什么是JDK和JRE。 JDK(java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包含了JRE。所以安装了JDK就不用再单独安装JRE了。 其中的开发工具:(javac.exe)编译工具 打包工具(jar.exe) JRE(Java Runtime Environment Java运行环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开
2020-07-19 15:08:30 96
原创 数组
1.数组 定义: 是多个相同类型得数据按一定顺序排列得集合,并使用一个名字命名,并通过编号得方式对这些数据进行统一管理 常见概念: 数组名 角标、下标(或索引) 元素 数组得长度(元素得个数) 特点: 数组是有序排列得 说明: 数组本身是引用数据类型,而数组中得元素可以是任意数据类型,包括基本数据类型和引用数据类型 创建数组对象会在内存中开辟一整块连续得空间,而数组中引用得是这块连续空间得首地址 数组得长度一旦确定。就不能修改 可以直接通过下标(或索引)得方式调用指定位置得
2020-07-15 17:45:41 92
原创 运算符和循环
一.运算符 定义:运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 分类:算数运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符。 1.算数运算符的测试用例: /*运算符: % (前)++ (后)++ (前)-- (后)-- +(拼接运算) */ public class Ari_Test { public static void main(String[] args) { // / 除号运算(数学运算中取商) int num = 14; i
2020-07-15 17:40:40 281
原创 变量和数据类型
变量: 在程序运行中可以发生变化的量叫做变量。 变量是一块具有名称的内存。 在JAVA中, 先声明变量后进行赋值。 数据类型: 基本数据类型 int byte short long --整数型 float 单精度浮点数 double 双精度浮点数 --浮点型 true 真 false 假 --布尔类型 char --字符类型 (用单引号引起来) 引用数据类型 对象 List Set Map 数组 字符串 万物皆可对象 ...
2020-07-02 20:00:08 75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人