![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
h2linlin
Le vent se lève, il faut tenter de vivre.
展开
-
Java基础-JDBC的使用
一、最简单原始的jdbc操作方法目录一、最简单原始的jdbc操作方法package jojo.study.a.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql...原创 2018-11-22 00:23:43 · 144 阅读 · 0 评论 -
笔记《Oracle官方并发教程》2.线程对象
文章目录新建线程Thread.sleep()方法中断(Interrupts): t.interrupt()中断支持中断状态标记: Thread.interrupted(), t.isInterrupted()Joins: t.join(), t.join(time)综合代码示例新建线程两种方式:继承Thread()public class Thread1 extends Thread ...原创 2019-08-01 02:37:19 · 188 阅读 · 0 评论 -
笔记《Oracle官方并发教程》3.同步
文章目录线程干扰内存一致性错误同步方法: synchronized内部锁与同步同步方法中的锁同步块可重入同步原子访问线程间的通信主要有两种方式:共享域、引用相同对象。但是这样就会引发两种错误:线程干扰、内存一致性错误。然后我们用同步来解决这个问题。本小节讨论以下问题:线程干扰讨论了当多个线程访问共享数据时错误是怎么发生的。内存一致性错误讨论了不一致的共享内存视图导致的错误。同步方法讨论...原创 2019-08-01 02:41:37 · 162 阅读 · 0 评论 -
笔记《Oracle官方并发教程》4.活跃度
文章目录死锁饥饿和活锁饥饿活锁活跃性就是指一个并发应用程序能及时执行的能力。本小节介绍最常见的活跃度问题:死锁(deadlock)。还有饥饿(starvation)和活锁(livelock)。死锁死锁就是说,两个或多个线程相互阻塞,都在等待对方释放资源。例如,两个朋友鞠躬,A向B鞠躬时,必须保持姿势,直到B向A回鞠躬。这个时候,如果两个人同时鞠躬,那么就死锁了。例子如下,本质上是,A同步...原创 2019-08-01 02:42:28 · 117 阅读 · 0 评论 -
笔记《Oracle官方并发教程》5.GuardedBlocks
文章目录最简单的方法:循环检测更高效的方法:wait()、notifyAll()生产者消费者代码示例多线程之间需要协同工作,最常见的方式就是Guarded Blocks。方法是,循环检查一个条件,直到条件发生变化后,跳出循环继续执行。在使用Guarded Blocks时要注意以下步骤:最简单的方法:循环检测例如,如果guardedJoy()方法必须要等待另一线程为共享变量joy设值才能继续执...原创 2019-08-01 02:43:18 · 178 阅读 · 0 评论 -
笔记《Oracle官方并发教程》6.不可变对象
文章目录一个同步类的例子定义不可变对象不可变对象就是创建后不能修改的对象。由于不可变对象不存在线程干扰和内存一致性问题,因此用不可变对象进行并发编程很有用。不可变对象虽然有创建新对象的开销,但是因为减低了垃圾回收的开销,并且减少了用来保证可变对象出现并发错误的代码,因此并不需要担心它的开销问题。下面举例,一个可变对象的类,然后转化为不可变对象的类。一个同步类的例子Synchronized...原创 2019-08-01 02:43:50 · 115 阅读 · 0 评论 -
笔记《Oracle官方并发教程》7.高级并发对象
文章目录锁对象执行器(Executors)Executor接口Executor接口ExecutorService接口ScheduledExecutorService接口线程池Fork/Join基本使用方法使用示例:图像标准实现并发集合原子变量并发随机数之前的文章中主要介绍了Java的低级API如何处理并发编程。本节将介绍一些处理并发编程的高级Java API。这些API是Java5.0新增的,大...原创 2019-08-01 02:44:34 · 291 阅读 · 0 评论 -
笔记《Oracle官方并发教程》8.延伸阅读
扩展阅读Concurrent Programming in Java: Design Principles and Pattern (2nd Edition) by Doug Lea. Doug Lea也是Java并发框架的作者之一Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bo...原创 2019-08-01 02:45:07 · 118 阅读 · 0 评论 -
笔记《Thinking in Java》第9章 接口
title: 笔记《Thinking in Java》第9章 接口date: 2019-08-06 23:34:26categories:JavaSEJava基础tags:学习笔记Java基础top:第九章 接口1.抽象类和抽象方法包含抽象方法的类叫抽象类。(也就是如果有abstract方法,类上不加abstract编译器会报错)编译器保证了抽象方法一定会被实现:继...原创 2019-08-06 23:37:36 · 195 阅读 · 0 评论 -
笔记《Oracle官方并发教程》1.进程和线程
文章目录进程线程在并发编程中,有两个基本的执行单元:进程和线程。进程是资源分配的最小单位,线程时CPU调度的最小单位。多处理器或者多核多处理器(一个处理器有多个核)的计算机现在很普遍,可以用多线程来提高性能。不过在单核的计算机中,也有许多活动的进程和线程。在单核计算机中,任意时刻只有一个线程在运行,CPU通过时间片来分配。进程进程具有一个独立的执行环境。通常情况下,进程拥有一个完整的、私...原创 2019-08-01 02:36:21 · 377 阅读 · 1 评论 -
笔记《Thinking in Java》第8章 多态
第八章 多态除了继承和封装,多态通过分离作什么和怎么做,从另一个角度把接口和实现分开。多态是一项让程序员“将改变的事物与未变的事物分离开来”的技术。**多态也称作动态绑定、后期绑定、运行时绑定。**与前期绑定相对应。将一个方法调用同一个方法主体关联起来,就被称作绑定。前期绑定时,方法的调用主体和方法是一一对应起来绑定的,C语言就只有前期绑定。而动态绑定(多态)就是说,方法的调用主体和调用的方法...原创 2019-05-29 23:34:50 · 163 阅读 · 0 评论 -
笔记《Thinking in Java》第7章 复用类
第七章 复用类总共有这几种方法:组合,继承,代理。1.组合略。2.继承如果没有显示的声明继承,那么这个类是隐式继承Object的。即使一个程序里很多类都有main方法,也只有命令行运行的那个类的main方法能够运行。当创建子类对象时,它内部其实是隐式的包含了一个父类的对象的。子类的构造方法的第一条命令,隐式的包含有一条super();语句。3.代理代理对象持有私有的子对象。并用...原创 2019-05-29 21:58:10 · 149 阅读 · 0 评论 -
Java基础-容器
一、Collection接口1.继承结构如下:2.遍历Collection1)使用迭代器遍历for (Iterator<Object> i = list.iterator(); i.hasNext(); ) { Object obj = i.next(); // doSomething i.remove;...原创 2018-12-22 23:46:00 · 125 阅读 · 0 评论 -
Java基础-泛型
1.综述参数化类型就是泛型,泛型中不能放基本类型。泛型的实质是将类型作为参数,即数据类型参数化。在类、接口、方法中皆可使用。定义:用尖括号定义2.使用泛型1)在类/接口上定义泛型public class Animal<T, Q>() { public T name;}Dog<String> dog = new Dog<&g...原创 2018-12-26 22:34:42 · 96 阅读 · 0 评论 -
Java基础-IO流
IO流本身是用来做文件输入输出的。一、File类1.File类简介File类是java.io包下用来操作文件和目录的类。File类可以新建、删除文件和目录,但是不能访问文件内容本身,如果需要访问文件内容本身,则需要使用IO流。2.File类常用的构造方法 File没有无参的构造方法。操作每一个文件/文件夹都要对应一个对象。1)File(String pa...原创 2018-12-27 00:55:36 · 133 阅读 · 0 评论 -
Java基础-异常
1.异常分类受不受检:编译器报不报错。1)受检异常就是非运行时异常。外界因素造成,不是程序员的逻辑错误。再怎么修改代码都不一定能杜绝。是编译器要求必须处理的异常,不处理则编译器会报错的异常。指的是程序在运行时由于外界因素造成的一般性异常。例如:没有找到指定名称的类:java.lang.ClassNotFoundException访问不存在的文件:java.io....原创 2018-12-27 23:25:13 · 133 阅读 · 0 评论 -
Java并发-多线程(1)
一、进程和线程的概念1.进程和线程概念每个运行的程序就是一个进程。程序进行时,内部可能包含多个顺序执行流,每个顺序执行流就是一个线程。进程间有独立的内存资源,而线程是共享父进程的全部资源。线程间是抢占式的运行,即并发性。2. 多线程是并发性而不是并行性的并发:在时间片间相互切换。并行:同时运行。所以,多线程的意义在于最大限度的使用CPU。二、线程的创建与...原创 2018-12-28 23:15:28 · 240 阅读 · 0 评论 -
Java并发-多线程(2)
一、线程的同步1.什么是线程的同步线程同步(线程安全):多个线程访问同一份资源的时候要考虑这个问题。同步方法:使用同步代码块:synchronized(要加锁的变量){作用的代码块范围} // 子线程类 public static class SonThread extends Thread { private Object a...原创 2018-12-28 23:19:11 · 159 阅读 · 0 评论 -
笔记《Thinking in Java》第2章 一切都是对象
第二章 一切都是对象1.数据可以存在哪寄存器。因为它在CPU内部,所以最快。但是Java无法直接控制它。栈。在RAM上,但是,CPU可以通过栈指针快速的分配存储,向下就分配新内存,向上就释放内存,所以速度很快。代价是,Java系统必须确切的知道数据在栈里的生命周期,所以灵活性有限。Java的对象引用存在这。堆。也是在RAM上,不过跟栈比,编译器不用知道数据在堆里的生命周期,所以在堆里分配...原创 2019-05-29 21:48:25 · 140 阅读 · 0 评论 -
笔记《Thinking in Java》第5章 初始化与清理
第五章 初始化与清理1.构造方法如果没有构造方法,则实行默认的构造方法。如果自己创建了有参的构造方法,那么默认的无参构造方法就失效了。需要的话要自己创建。构造方法是没有返回值的(跟返回void不一样)。不过在构造方法里还是可以单独的使用return来表示程序结束。 public Test201957(int integerIn){ if (integerIn >= 1) { ...原创 2019-05-29 21:57:13 · 146 阅读 · 0 评论 -
源码-Java容器-1.总体认识
title: 源码-Java容器-1.总体认识date: 2019-08-15 00:37:25categories:JavaSEJava容器tags:Java容器top:Java容器部分所有的内容都是基于Java1.8分析的。1.总体设计思路Java容器框架,由Collection和Map组成。其中,Collection又分化为Set、List和Queue。Map整体...原创 2019-08-15 00:46:39 · 479 阅读 · 0 评论