Java基础
EdgarSpring
这个作者很懒,什么都没留下…
展开
-
Edgar--java学习--疯狂的线程的疯狂总结-javaSE的小告别
知识点比较多,比较杂。(写的很简单,多希望大佬来纠正啊!)先简单说下文章结构吧。1.线程的多种创建模式这是对应代码链接link2.线程相关的APIlink3守护线程问题link4.synchronize关键字引出的锁问题link5.join关和Interrupted键字link6闭锁和栅栏link7.volatile关键字link8.初探线程池linkjavaSE部分告一段落了,这里很多知识太值的去作总结,功利一点说,下一步准备将每片SE博文都对应上校招的知识点原创 2020-06-12 23:13:16 · 133 阅读 · 0 评论 -
Edgar-Demo8
package Thread;/* * 线程池的初探 * * 目的:1.不用反复创建或者销毁线程 * 使得线程资源被充分利用 * 同时一旦任务降临,直接调用线程池中的线程,执行速度也会加快 * 2.有效控制线程池的最大并发数,避免大量的线程直接印抢占资源而拥塞 * (线程多了,出现死锁的概率不也大了吗?) * 3.能够对线程进行简单的管理,并提供特定的操作 * 如:定期、定时、单线程、并发数量控制 * 初步记忆 * 基本结构---ne原创 2020-06-12 23:11:49 · 148 阅读 · 0 评论 -
Edgar-Demo7
package Thread;/* * volatile关键字---竞态条件的问题的引入--线程之间同步性问题 * * 用法 :位置经过测试 原则上只要加在类型之前就可以 习惯加在 static之后(因为这个修饰的是共享变量大概率是全局静态的) * 按理说 我们使用了static修饰以后全局可见,但是线程读入一次以后,不在主动看这个值(或者说其他线程修改了也没有告诉这个线程) * 一旦一个共享变量使用volatile修饰 这个变量就有了两层语义 * 修饰过的变量的特性 *原创 2020-06-12 23:10:40 · 134 阅读 · 0 评论 -
Edgar-Demo6
package Thread;import java.util.concurrent.CountDownLatch;/* * countDownLatch---闭锁--(计数减计时器)--不可复用 * (1.5以后开始并发包中提供,并发编程类) * 这个类能够使一个线程等待其他线程完成各自的工作后再执行 * (守护线程是等待其他线程结束(完成后)自己再结束) * Demo:五个检测线程执行完毕后再执行输出系统正常 * * 在其他线程上加锁,然后等到这些线程都执行完毕后,我原创 2020-06-12 23:09:41 · 126 阅读 · 0 评论 -
Edgar-Demo5
package Thread;/* * 2.join---(加塞动作) * t1.join(); * demo:取豆子事件 * 一共10个豆子,张三取完5个,李四再取五个 * (注意区别好与同步锁的区别,那是对于一个单位的资源,我们不能去抢占) * (而join保证的是线程按照我们既定的顺序执行) * join 保证线程串行执行 * 使用方法 * 如果设定 B在A后面执行的话 * a.join 这个join就是参加 加入 * 就是告诉b线程我a线程来插队了原创 2020-06-12 23:08:08 · 116 阅读 · 2 评论 -
Edgar--Demo4
package Thread;/* * 我们使用多线程方法时,会有机会出现某一时刻都是去访问同一颗豆子问题 * 引出线程同步问题 * 我们使用关键字 synchronized 对方法或代码块进行加锁 * 对代码块进行加锁 那一段线程就变成了互斥代码块 * 需要一个不变的对象进行传参--对象叫同步监视器 * 1.使用一个静态的对象 * 2.常用这个类的静态属性 类名.class * demo: * 我们不让西门庆和金莲同时出门和试衣间 * 进入商场我们用方法实现原创 2020-06-12 23:06:55 · 117 阅读 · 0 评论 -
Edgar---Demo3
package Thread;/*Java中的线程分为两类:一种是守护线程,一种是用户线程。 * 守护线程 *(首先主线程main和GC就是守护线程) * 前面线程都结束以后,守护线程就结束 * 用户线程又称前台线程 * 它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。 守护线程是用来服务用户线程的, 通过在start()方法前调用 thread.setDaemon(true)可以把一个用户线程变成一个守护线程。 Java垃圾回收就是一个典型的守护线程。原创 2020-06-12 23:05:12 · 162 阅读 · 0 评论 -
Edgar--Demo2
package Thread;/* 线程优先级问题 * 线程的相关操作的方法 * 线程相关信息的获取 */public class Demo2 { public static void main(String[] args) throws InterruptedException { //获取当前线程 //(主线程正在运行主方法) //1. System.out.println(Thread.currentThread()); //2.在线程中有另外两种(线程也是对象所以有原创 2020-06-12 23:02:26 · 153 阅读 · 0 评论 -
Edgar--Demo1
package Thread;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/* * 多线程 * 1.理解进程与线程关系 * 进程就是正在执行的程序,在内存中一块区域 * 线程组织起进程(一个进程可以有一个线程) * 2.线程的几种状态(os笔记有说) * * 3.单线程原创 2020-06-12 22:59:49 · 171 阅读 · 0 评论 -
Edgar--java学习--多线程聊天室的实现(v1.0)(和我一样的小白分享)
一二原创 2020-06-09 00:13:19 · 257 阅读 · 0 评论 -
Edgar-java学习--转换流和序列化相关问题
package 标准输入输出;一、标准输入输出流1.标准输入流 inputstream2.标准输出流 printStream二、转换流1.outputstreamwriter 将字节输出转换为字符输出流字节流的话操作的空间不大,但是识别的文件适用范围很大字符操作的话 换行之类的 输出一行之类的 主要是对中文有较好的识别三、对象操作流我们可以把对象存到文件里1.方便存储 传输速度快 安全1.1 序列化的对象的类要实现序列化接口1.2 序原创 2020-06-03 00:56:45 · 149 阅读 · 0 评论 -
Edgar--java学习--小说hashmap
package 集合map;import java.util.*;import java.util.Map.Entry;;/*map接口是除了collection的另一个接口主要区别是 map是双列存储 是一个对键值对 key与 valueList、Set、Map都可以通过迭代器来遍历先看 hashmap 1.无序 //没有索引 所以后期遍历的时候我们只能通过迭代器遍历//两种一种是 keyset 一种是 entryset 2.不可重复---因为key序列是se原创 2020-06-02 17:48:39 · 164 阅读 · 0 评论 -
Edgar--java中的delete小老弟的故事
前提java中file。delete 不支持直接对一个非空文件夹直接删除(这里能感受到java的对待数据安全的重视)需求 删除指定子目录实现思路 那就把文件夹下的所有文件先删除呗,再删除文件夹遇到问题 那么又涉及到了递归问题。。。也就是说子文件夹下的文件中可能还有文件夹。。疯狂递归模式。。。。话不多说上代码 中间只有一个地方当时调试了一下。就是清空完文件夹记得删除文件夹熬!!!!package Homework8;import java.io.File..原创 2020-05-29 22:38:03 · 296 阅读 · 0 评论 -
Edgar--一个搜索java文件的小小练习(小小总结一下2个月来的代码风格相关变化)
summary之前的代码没有发出来是因为,我发现怎么测试都没过。。。当时的代码偷偷看了一下。一个是感觉当时路子很野,但是知识很不扎实吧,但是不会写这个全局遍历,导致递归的时候,这个文件个数带不出来,然后我用来一个数组中的一位,当时不太理解引用数据类型就是很模糊的去做的。现在的话,自然而然就直接用全局静态遍变量。二是感觉当时的代码封装性很差,存在很冗余。这次的话,利用重载基本解决了冗余的问题。感觉确实是思路上了一个小台阶。三就是更加注意代码风格了(快捷键确实好用。。) /* * 功能:搜索相应文原创 2020-05-29 16:47:07 · 190 阅读 · 0 评论 -
Edgar的java学习日志-Final与static的相关思考
java学习日志4fianl和static修饰字的相关思考时间:2020.5.8一.final修饰1.final修饰的变量常量:由final修饰的变量我们叫做常量。常量必须赋值一次,可以是在定义的时候直接赋值,也可以是在构造器中,后面无法被赋值或者修改接口中的成员属性都是常量对应代码理解//第一种```fianl int a;构造方法(){ a=10;}`````...原创 2020-05-08 10:11:13 · 142 阅读 · 1 评论 -
Edgar的java学习日志-抽象类与接口的相关思考
java学习日志3标题抽象类与接口的区别与联系的相关思考时间:2020.5.71.关于抽象方法的包含抽象类在普通类的基础上添加了抽象方法,所以包含抽象方法的类一定是抽象类,用abstract来修饰类名。 但是抽象类可以不含有抽象方法,接口也可以不含自己的抽象方法。2.构造方法的包含2.抽象类有自己的构造器。但是接口没有。所以抽象类可以通过new来 创建,只是要重写里面的抽象方法...原创 2020-05-07 16:55:51 · 118 阅读 · 0 评论 -
Edgar的java 学习日志--多态篇
java学习日志2时间:2020.5.6先说OOP三大特征的自我理解* 封装(属性私有 提供公共方法对外访问)封装的解释这里我想引一个小故事,我觉得对新手更加友好。最初是smart是最早的oop语言,发明他的哥们在观察同事处理数据的时候,总是将数据和处理数据的方法一同发给客户。当我们聊封装的时候,第一反应就是安全。的确,我们通过私有化,再通过向外提供公共接口,我们尽最大可能保证了数据的...原创 2020-05-06 12:02:24 · 145 阅读 · 0 评论 -
Edgar的java学习日志--接口篇
java学习日志日期:2020.5.3 接口相关首先今天实名感谢猛哥、文哥、舒哥等同学对我长期以来技术的支持。public static void main(String args[]){System.out.println("万里之行,在于出发")}先简单梳理一下,以后再补充/* * 接口是特殊的抽象类 * * 1.结合接口关于多继承的理解 * 接口通过多接口的实现的方...原创 2020-05-03 23:19:56 · 175 阅读 · 0 评论