• 等级
  • 5580 访问
  • 59 原创
  • 1 转发
  • 93676 排名
  • 2 评论
  • 59 获赞

Java之可重入锁--ReentrantLock

重入性:表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。 重入性的实现原理 判断当前线程能否获得锁为例,核心方法为 nonfairTryAcquire(): final boolean nonfairTryAcquire(int acquires) { //获取当前线程对象 final Thread current = Threa...

2019-01-18 10:30:47

IDEA报错

IDEA报错:Error:Cannot run program “D:\Program Files\Java\jdk1.8.0_181\bin\java.exe” (in directory “C:\Users\Administrator.IntelliJIdea2018.1\system\compile-server”): CreateProcess error=2, 系统找不到指定的文件。 这...

2019-01-18 10:25:45

JavaSE之序列化

文章目录什么是序列化序列化与反序列化transient关键字 什么是序列化 1.定义:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。 2.实现:Java中类若要被序列化输出,该类必须实现Serializable接口(该接口是一个标识接口,表示该类具有序列化的功能)。 序列化与反序列化 如果要想实现序列化与反序列化的对象操作,在java.io包中提供有两个处理类:Obje...

2018-12-09 21:25:52

JavaSE之打印流

文章目录自己设计一个简单打印流系统提供的打印流格式化输出 自己设计一个简单打印流 import java.io.*; import java.io.File; import java.util.Date; class PrintUtil{ private OutputStream out; public PrintUtil(OutputStream out){ this.out=out; ...

2018-12-09 19:48:56

JavaSE之字符编码

常用字符编码 在计算机的世界里面,所有的文字都是通过编码来描述的。对于编码而言,如果没有正确的解码,那么就会产生乱码。 所以为了避免乱码问题,我们就要清楚一些常见的编码有哪些: 1. GBK、GB2312:表示的是国标编码,GBK包含简体中文和繁体中文,而GB2312只包含简体中文。也就是说,这两种编码都是描述中文的编码。 2. UNICODE编码:java提供的16进制编码,可以描述世界上任意的...

2018-12-06 13:13:09

JavaSE值字节流与字符流

文章目录流操作简介字节输出流(OutputStream)AutoCloseable自动关闭支持字节输入流(InputStream)字符输出流(Writer)字符输入流(Reader)字节流&字符流的区别 流操作简介 File类不支持文件内容处理,如果要处理文件内容,必须要通过流的操作模式来完成。流分为输入流和输出流。 在java.io包中,流分为两种:字节流与字符流 字节流(byte):...

2018-12-05 17:35:07

JavaSE之File文件操作类

在Java.io包之中,File类是唯一一个与文件本身操作(创建、删除、取得信息…)有关的程序类。 File类的基本使用 File类的构造方法: public File(String pathname) ;//设置文件的路径 public File(String parent, String child);//设置父路径和子路径 创建一个新文件: public boolean createNew...

2018-12-05 15:04:12

Java之lock体系

文章目录Lock与synchronized比较Lock接口APIAQS同步器什么是同步器AQS的模板方法设计模式深入理解AQSAQS的模板方法同步队列独占锁独占锁的获取流程图独占锁的释放总结 Lock与synchronized比较 锁是用来控制多个线程访问共享资源的方式。JDK5之前,java程序主要是靠synchronized关键字实现锁功能的,而JDK5之后,并发包中增加了lock接口,它提供...

2018-12-03 09:44:15

JavaSE之生产消费者模型

wait()方法 1. 方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法是用来将当前线程置 入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。 2. wait()方法只能在同步方法中或同步块中调用。如果调用wait()时,没有持有适当的锁,会抛出异常 3. wait()方法执行后,当前线程释放锁,其它线程可以竞...

2018-11-29 16:30:20

Java之锁的实现原理

文章目录synchronized实现原理同步代码块的底层实现同步方法的底层实现moniter机制可重入锁的解释提供的Lock锁synchronized的优化CAS操作什么是CAS?CAS的操作过程CAS的问题Java对象头偏向锁轻量级锁重量级锁三种锁特点:锁粗化锁消除 synchronized实现原理 同步代码块的底层实现 先看一段代码: class Test{ public stati...

2018-11-29 11:03:36

Java之线程的同步与锁

文章目录为什么要同步处理线程?同步处理synchronized处理同步问题使用同步代码块使用同步方法synchronized锁多对象锁同一个对象全局锁(锁代码段)使用类的静态同步方法在代码块中锁当前Class对象synchronized实现原理 为什么要同步处理线程? 什么是同步? 同步指的是所有的线程不是一起进入到方法中执行,而是按照顺序一个一个进来。 范例:多个线程同步卖票 class MyT...

2018-11-29 09:52:03

The 2017 ACM-ICPC Asia Beijing Regional E - Cats and Fish

思维题,模拟猫吃鱼的过程就出来了~~~~ There are many homeless cats in PKU campus. They are all happy because the students in the cat club of PKU take good care of them. Li lei is one of the members of the cat club. He...

2018-11-20 20:04:45

求第K个回文

I - Palindromes Recently, Nvoenewr learnt palindromes in his class. A palindrome is a nonnegative integer that is the same when read from left to right and when read from right to left. For example, 0...

2018-11-19 17:35:01

Java之多线程的常用操作

线程命名与取得 在Thread类中提供有如下的线程名称方法: 在Thread类中还提供有一个方法取得当前线程对象: public static native Thread currentThread(); 范例:设置和取得线程的名称 class MyThread implements Runnable{ @Override public void run() { ...

2018-11-18 16:33:40

Java之多线程的实现

进程与线程的概念 进程:操作系统中一个程序的执行周期 线程:一个进程同时执行多个任务。通常来讲,每个任务就称为一个线程。 线程与进程比较: 1.线程更加的“轻量级”,创建、撤销一个线程比启动、撤销一个进程开销要小的多。一个进程中的所有线程共享此进程的所有资源。 2.没有进程就没有线程,进程一旦终止,其内的线程也将不复存在 3.进程是操作系统资源调度的基本单位,进程可以独享资源。线程需要依托进程提供...

2018-11-17 17:39:43

Java之Lambda表达式&方法引用

接口定义增强 JDK1.8之后接口出现以下两类方法: a.在接口中使用default定义的普通方法,需要通过接口对象来调用 b.在接口中使用static定义的静态方法,直接使用接口调用。 范例: interface IInterface{ //接口中定义的抽象方法 void test(); //使用default定义的普通方法 default void test1(...

2018-11-16 18:13:03

Java之注解

@Override 准确覆写 当子类覆写父类方法时,此注解检查覆写的方法是否正确声明,只有满足覆写方法要求才会编译通过,否则编译出错 @Deprecated 过期声明 建议用户不使用原有的类和方法时,可以在类或方法上加@Deprecated这个注解 表示在当前版本中不建议使用(但是要使用还是可以使用的) @suppressWarings 压制警告 调用某些操作可能产生问题的时候可能会出现警告...

2018-11-16 16:36:12

Java之枚举

语法: 范例:枚举的使用 enum Color { RED,GREEN,BLUE } public class TestDemo { public static void main(String[] args) { System.out.println(Color.BLUE); } }

2018-11-16 16:05:56

Java之泛型

从JDK1.5以后引入了三个常用新特性:泛型、枚举、注解。今天我们先来看看这第一大特性:泛型。 泛型的引出 假设我们要定义一个坐标Point类,提供两个属性x、y。但是这两个属性可以是整型、字符型、浮点型,我们总不能分别写三种类只有类型不一样但是功能啥的都一样的类,这样代码重的问题太严重了,所以java中有一种类可以保存所有的类型:Object类 范例:定义Point类 class Point{ ...

2018-11-15 21:33:54

Java之静态导入

首先,我们定义一个类,这个类提供了static方法。 范例: package hhh.pre.java.util; public class MyMath { public static int Add(int num1,int num2){ return num1+num2; } public static int Mul(int num1,int nu...

2018-11-15 13:05:36

HL_HLHL

关注
  • 中国
奖章
  • 持之以恒