摘要:死锁 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有 ”两个以上对象的锁“ 时,就可能会发生 “死锁” 的问题。 package com.thread.lock;//死锁:多个线程互相抱着对
阅读全文
摘要:线程状态 创建状态、就绪状态、运行状态、阻塞状态、死亡状态 线程停止 package com.thread.state;//测试stop//1.建议线程正常停止——>利用次数,不建议死循环//2.建议使用标志位——>设置一个标志位public class TestStop implements
阅读全文
摘要:继承Thread类 package com.thread.demo01;//创建线程方式一:继承Thread类,重写run()方法,调用start方法开启线程//总结:注意,线程开启不一定立即执行,由CPU调度执行public class TestThread1 extends Thread{
阅读全文
摘要:lambda 避免匿名内部类定义过多 其实质属于函数式编程的概念 去掉了一堆没有意义的代码,只留下核心的逻辑 理解函数式接口是学习Java8 lambda表达式的关键所在 函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。 对于函数式接口,我们可以通过lambda表
阅读全文
摘要:多任务 现实中太多同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事。 多线程 一条马路多个车道,提高了使用效率。 程序 · 进程(Process) · 线程(Thread) 在操作系统中运行的程序就是进程,比如QQ、播放器、游戏...... 一个进程可以
阅读全文
摘要:捕获 public class Test { public static void main(String[] args) { int a = 1; int b = 0; try{ System.out.println(a/b); }//try 监控区域 catch(ArithmeticExce
阅读全文
摘要:自定义异常 使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。 在程序中使用自定义异常类,大体可分为以下几个步骤: 创建自定义异常类。 在方法中通过throw关键字抛出异常对象。 如果在当前抛出异常的方法
阅读全文
摘要:什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了。等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些异
阅读全文
摘要:封装 该露的露,该藏的藏 我们程序设计要追求"高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏) 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。 记住这句话就够了:属性私有,get
阅读全文
摘要:类与对象的创建 类与对象的关系 类是一种抽象的数据类型,他是对某一类事物的整体定义,但是不能代表某一个具体的事物。 动物、植物、手机、电脑...... Person类、Pet类、Car类等,这些类都是用来描述/定义某一类事物应该具备的特点和行为 对象是抽象概念的具体实例。 张三就是人的一个具体实例
阅读全文
摘要:面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么...... 面向过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,首先思考解决问题需要怎么分类,然后对分类进行单独思考。最后,对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂问题,适合处理需
阅读全文
摘要:数组的定义 数组是相同类型数据的有序集合。 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。 数组的声明和创建 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] arrayRefVar; // 首选的方法或dataType arrayR
阅读全文