Java基础
chen18677338530
这个作者很懒,什么都没留下…
展开
-
java01
数据类型和变量数组:固定长度的同种数据类型的多条记录,这些数据在内存中连续存放。对象:对象是有基本数据类型、数组和其他对象组合而成的一个东西。变量申明之后,就已经在内存中分配已一个位置,但是这个位置的内容是未知的。== 是判断的内存地址的值是否相等&:连个都是true才是true,只要有一个false就是false|:只要有一个true就是true,都是false才...原创 2019-11-29 14:43:42 · 275 阅读 · 0 评论 -
自定义线程池使用
package t1;import java.util.concurrent.*;public class T2 {// AbortPolicy 直接异常// CallerRunsPolicy 回退// DiscardPolicy 指出来max + 队列 public static void main(String[] args) { Ex...原创 2019-07-24 17:08:27 · 183 阅读 · 0 评论 -
死锁的代码
package t1;// 死锁public class T3 { public static void main(String[] args) { String lockA = "a"; String lockB = "b"; new Thread(new HoldLockThread(lockA,lockB)).start();...原创 2019-07-24 17:23:53 · 508 阅读 · 0 评论 -
死锁查看定位解决
解决:重启定位:jps jstackD:\Workspace\flutter\letsJava>jps -l36368 t1.T217076 sun.tools.jps.Jps3512426376 org.jetbrains.jps.cmdline.Launcher3800832796 t1.T3D:\Workspace\flutter\letsJava>jps -...原创 2019-07-24 17:29:33 · 1246 阅读 · 0 评论 -
静态代码与静态代码块
package t2;public class T2 { { System.out.println("我是代码块"); } static { System.out.println("我是静态代码块"); } public static void main(String[] args) { T2 t1 =...原创 2019-07-25 10:00:23 · 112 阅读 · 0 评论 -
实例变量初始化时机
package t2;public class T3 { private String name = "default"; { name = "static"; } public T3(String name) { this.name = name; } public static void main(Str...原创 2019-07-25 10:05:27 · 162 阅读 · 0 评论 -
多线程入门
线程与进程区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读...原创 2019-07-22 11:06:25 · 63 阅读 · 0 评论 -
线程安全
什么是线程安全当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。package 线程安全;public class T1 implements Runnable { private int trainCou...原创 2019-07-22 11:18:48 · 108 阅读 · 0 评论 -
Threadlocal使用
什么是ThreadlocalThreadLocal提高一个线程的局部变量,访问某个线程拥有自己局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal的接口方法ThreadLocal类接口很简单,只有4个方法void set(Obje...原创 2019-07-22 11:25:14 · 118 阅读 · 0 评论 -
多线程三大特性
原子性、可见性、有序性什么是原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其中就包括,读取i的值,计算i...原创 2019-07-22 11:26:38 · 93 阅读 · 0 评论 -
Java内存模型
共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲...原创 2019-07-22 11:28:47 · 106 阅读 · 0 评论 -
CountDownLatch使用
CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的...原创 2019-07-22 11:34:13 · 95 阅读 · 0 评论 -
自定义线程池
如果当前线程池中的线程数目小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务;如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列当中,若添加成功,则该任务会等待空闲线程将其取出去执行;若添加失败(一般来说是任务缓存队列已满),则会尝试创建新的线程去执行这个任务;如果队列已经满了,则在总线程数不大于maximumP...原创 2019-07-22 11:42:09 · 190 阅读 · 0 评论 -
Calendar类
常用的方法getsetgetTimeadd原创 2019-07-17 16:12:17 · 188 阅读 · 0 评论 -
Date类
类图常用类因为Date里面方法基本差不多已经过时,推荐使用:DateFormat常用的有:format,parse原创 2019-07-17 16:09:26 · 84 阅读 · 0 评论 -
Object类
类图常用方法toStringequals重新常用方法package 常用方法;import java.util.Objects;public class Student { private int id; private String name; private int age; public int getId() { ret...原创 2019-07-17 15:58:06 · 74 阅读 · 0 评论 -
字节和字符区别
字节字节,说白了就是byte,二进制数据。通常在读取图片、声音、可执行文件需要用字节数组来保存文件,在下载文件也是用byte数组来做临时的缓冲器接收文件内容。字符机器只知道字节,而字符却是语义上的单位,它是有编码的,一个字符可能编码成1个2个甚至3个4个字节。这跟字符集编码有关系,英文字母和数字是单字节,但汉字这些自然语言中的字符是多字节的。一个字节只能表示255个字符,不可能用于全球...原创 2019-05-30 12:37:43 · 7631 阅读 · 1 评论 -
1字节等于8比特的由来
通常情况下一字节等于八位,也在一些计算机编程语言中表示数据类型和语言字符。比特是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。一般来说,n比特的信息量可以表现出2的n次方种选择。所谓字节,原意就是用来表示一个完整的字符的。最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。BCD编码表示数字还...原创 2019-05-30 12:51:07 · 8585 阅读 · 0 评论 -
File类总结
File类是java.io包下代表与平台无关的文件和目录,如果希望在程序中操作文件和目录,都可以通过File类完成。不管是文件还是目录都是使用File来操作,File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入输出流。访问文件名相关方法getName()getPath()getAbsoluteFile()getAbsoluteP...原创 2019-05-30 13:03:16 · 1648 阅读 · 0 评论 -
常见的数据结构
栈:stack,又称堆栈,对元素的存取特点是:先进后出。即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素队列:queue,简称队,对元素的存取特点是:先进先出。即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素。数组:Array,是有序的元素序列,对元素的存取特点是:查找元素快:通过索引,可以快速访问指定位置的元素。增删元素慢。链表:linked list,对元素...原创 2019-06-04 11:48:45 · 1748 阅读 · 0 评论 -
Centos7安装jdk8
下载linux系统的jdk文件使用xftp上传文件解决文件tar -zxvf jdk-8u181-linux-x64.tar.gz配置环境变量vi /etc/profile追加:#java environmentexport JAVA_HOME=/usr/java/jdk1.8.0_181export CLASSPATH=.:${JAVA_HOME}/jre...原创 2019-06-04 18:18:57 · 1788 阅读 · 2 评论 -
线程池分类
原创 2019-07-08 14:10:10 · 116 阅读 · 0 评论 -
线程池基本控制
SleepjoinInterruptstop原创 2019-07-08 14:10:19 · 114 阅读 · 0 评论 -
自己实现自旋锁
import java.util.concurrent.atomic.AtomicReference;public class T7 { AtomicReference<Thread> atomicReference = new AtomicReference<>(); public void myLock(){ Thread thr...原创 2019-07-23 18:09:51 · 374 阅读 · 0 评论 -
读写锁
import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.ReentrantReadWriteLock;// 读...原创 2019-07-23 18:34:32 · 120 阅读 · 0 评论 -
CountDownLatch案例
import java.util.concurrent.CountDownLatch;//CountDownLatchpublic class T9 { public static void main(String[] args) throws Exception { CountDownLatch countDownLatch = new CountDownLatc...原创 2019-07-23 18:56:10 · 162 阅读 · 0 评论 -
CyclicBarrier 召唤七龙珠
import java.util.concurrent.CyclicBarrier;// CyclicBarrierpublic class T10 {public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{ System....原创 2019-07-23 19:06:43 · 186 阅读 · 0 评论 -
Semaphore 抢车位案例
import java.util.concurrent.Semaphore;public class T11 { public static void main(String[] args) { Semaphore semaphore = new Semaphore(3); for (int i = 0; i < 7; i++) { ...原创 2019-07-23 19:15:11 · 443 阅读 · 0 评论 -
Java注解总结
注解说明注解其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用注解,可以在class源文件嵌入一些补充信息。基本注解限定充血父类方法:@Override限定某个程序类、方法已过时:@Deprecated抑制编译器警告:@SuppressWarnings“堆污染”警告:@SafeVarargs函数式接口:@FunctionalInterfa...原创 2019-05-30 11:42:24 · 1687 阅读 · 0 评论