![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
上海_彭彭
这个作者很懒,什么都没留下…
展开
-
java-日常练习-多线程-synchronized详解
先举个例子线程不安全的package a;class Test { public int a=0; public void setValue(String name) throws InterruptedException { if(name.equals("a")){ a=100; Thread.sleep(1000); System.out.println原创 2021-10-19 22:40:13 · 157 阅读 · 0 评论 -
java-日常练习-多线程-统计两个线程消耗的时间
场景如下:我想看下多线程一共消耗了多少时间,请看下这个例子 ,关键是这个类 CommonUtils 里的static 方法。package a;class CommonUtils{ public static long beginTime1; public static long beginTime2; public static long endTime1; public static long endTime2;}class Test {原创 2021-10-18 15:49:50 · 459 阅读 · 0 评论 -
java-日常练习-多线程暂停以及恢复(suspend和resume)
suspend 暂停线程 ,只是不继续执行任务, 线程对象还存在,可以调用 resume 恢复线程继续运行。package a;class Test extends Thread{ public int i=0; @Override public void run() { super.run(); while (true){ i++; } } }public class S原创 2021-10-16 17:18:27 · 634 阅读 · 0 评论 -
java-日常练习-用java 实现字符/字母雨,直接复制能运行成功
先看效果如图:import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.image.MemoryImageSource;import java.util.Arrays;import java.util.Random原创 2021-10-16 16:27:28 · 555 阅读 · 0 评论 -
java-日常练习-多线程-停止线程方法介绍(stop,interrupt,结合while使用退出标签)
1.姿势不对interrupt 永远不能停止线程运行package a;class Test extends Thread{ @Override public void run() { super.run(); for (int i = 0; i <1000 ; i++) { System.out.println("i="+i); try { Thread.slee.原创 2021-10-15 17:58:49 · 189 阅读 · 0 评论 -
java-日常练习-多线程-写一个类锁例子
package a;class Login{ public static String username; public static String password; public Login(String username,String password){ } synchronized public static void doLogin(String username,String password) throws InterruptedExc原创 2021-10-15 14:23:22 · 166 阅读 · 0 评论 -
java-日常练习-超简单的读写文件
import org.apache.commons.io.IOUtils; import java.io.*; public class Hello { public static void main(String[] args) { FileOutputStream out = null; FileInputStream in; try { File file=n...原创 2021-09-17 15:30:06 · 124 阅读 · 0 评论 -
java-日常练习-一行代码删除文件夹以及里面的文件
package a;import org.apache.commons.io.FileDeleteStrategy;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Hello { public static void main(String[] args) { File file=n原创 2021-09-16 23:07:14 · 109 阅读 · 0 评论 -
java-日常练习-IntRange 常用方法
IntRange range=new IntRange(-7,9); System.out.println(Arrays.toString(range.toArray())); System.out.println(range.containsInteger(5)); System.out.println(range.getMaximumDouble()); System.out.println(range.getMinimumDouble()); System.out.prin.原创 2021-09-14 18:32:24 · 1341 阅读 · 0 评论 -
java-日常练习-序列化和反序列化
package a;import org.apache.commons.lang.SerializationUtils;import java.io.*;public class Hello implements Serializable { int id; String name; public void setId(int id){ this.id=id; } public void setName(String name){原创 2021-09-14 18:12:37 · 113 阅读 · 0 评论 -
java-日常练习-RandomStringUtils实现随机字符串(数字,纯字母,数字和字母组合)
System.out.println(RandomStringUtils.randomAlphabetic(10)); System.out.println(RandomStringUtils.randomNumeric(10)); System.out.println(RandomStringUtils.randomAlphanumeric(10)); System.out.println(RandomStringUtils.randomAscii(10));打印结果:iVCgZAKFS..原创 2021-09-14 11:41:34 · 784 阅读 · 0 评论 -
java-日常练习-ArraysUtils 数组操作
int[] array=new int[5];Arrays.fill(array,9);System.out.println(Arrays.toString(array)); array= ArrayUtils.add(array,599); System.out.println(Arrays.toString(array)); array=ArrayUtils.add(array,0,1000); System.out.println(Arrays.toString(array)); arr原创 2021-09-14 11:17:21 · 284 阅读 · 0 评论 -
java-日常练习-随机号码生成器
for (int i = 0; i <5 ; i++) { int a=new Random().nextInt((int)Math.pow(10,7)); String number=(""+a); while (number.length()<7){ number="0"+number; } System.out.println(numbe.原创 2021-09-14 10:56:01 · 219 阅读 · 0 评论 -
java-日常练习-用GregorianCalendar 制作时钟
package a;import java.io.IOException;import java.util.Calendar;import java.util.GregorianCalendar;public class Arraylist{ public static String format(int number){ return number<10?"0"+number:""+number; } public static String原创 2021-09-13 23:39:52 · 145 阅读 · 0 评论 -
java-日常练习-泛型两种方法实现栈结构
package a;import java.util.LinkedList;public class HelloWorld<T> { LinkedList<T> list=new LinkedList<T>(); public void push(T i){ list.push(i); } public T pop(){ return list.removeFirst(); } p原创 2021-09-13 17:17:39 · 104 阅读 · 0 评论 -
java-日常练习-EnumMap 常用方法总结
package a;import java.util.EnumMap;public enum HelloWorld { SMALL,MEDIUM,LARGE,SUPERSTAR; public static void main(String[] args) { EnumMap<HelloWorld,String> cakes=new EnumMap<HelloWorld, String>(HelloWorld.class) ;原创 2021-09-13 14:43:16 · 430 阅读 · 0 评论 -
java-日常练习-EnumSet 常用操作方法
为了解决 enum 的不可变性, 用EnumSet 解决这个问题package a;import java.util.EnumSet;public enum HelloWorld { SMALL,MEDIUM,LARGE,SUPERSTAR; public static void main(String[] args) { EnumSet<HelloWorld> cake=EnumSet.noneOf(HelloWorld.class);原创 2021-09-13 14:01:45 · 108 阅读 · 0 评论 -
java-日常练习-扩展枚举类的方法
package a;public enum HelloWorld { SMALL("太小了,小蛋糕"),MEDIUM("中等大小蛋糕,好吃"),LARGE("太大了,超大蛋糕,我喜欢"); private String description; HelloWorld(String s) { this.description=s; } public String getDescription(){ return descripti原创 2021-09-13 13:26:14 · 235 阅读 · 0 评论 -
java-日常练习-信号量实现线程同步-10000人并发存款
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。Semaphore实现的功能就类似厕所有5个坑,假如有10个人要上厕所,那么同时只能有多少个人去上厕所呢?同时只能有5个人能够占用原创 2021-09-12 17:32:56 · 215 阅读 · 0 评论 -
java-日常练习-测试1w并发 ,用线程池和不用线程池内存和时间消耗对比
package a;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;class ExampleThread implements Runnable{ int id=0; @Override public void run() { id++; }}public class Sender { public static vo原创 2021-09-12 12:57:38 · 484 阅读 · 0 评论 -
java-日常练习-用线程池ThreadPoolExecutor 模拟1000人同时存款
这里面有个坑, 当使用ThreadLocal 注意你开启的线程数一定要等于运行的线程数,否则存入的钱会有问题,原因是: ThreadLocal 只是针对线程的,如果同时运行的线程数小于开启的运行数,ThreadLocal 会出现重复添加package a;import java.util.concurrent.*;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;pub原创 2021-09-12 11:50:23 · 282 阅读 · 0 评论 -
java-日常练习-利用ThreadLocal,FutureTask和ExecutorService(Callable)实现多线程存款任务
package a;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class Sender { ThreadLocal<Integer> amout= new ThreadLocal<Integer>(){ @Override原创 2021-09-11 20:03:58 · 227 阅读 · 0 评论 -
java-日常练习-使用 LinkedBlockingDeque 实现生产消费模式
package a;import java.util.concurrent.LinkedBlockingDeque;class Receiver implements Runnable{ private LinkedBlockingDeque<String> A ; public Sender sender; public Receiver(Sender sender, LinkedBlockingDeque<String> A ){原创 2021-09-11 17:31:12 · 123 阅读 · 0 评论 -
java-日常练习-多线程 Thread.yield()实现生产消费模式
package a;class Receiver implements Runnable{ public Sender sender; public Receiver(Sender sender){ this.sender=sender; } @Override public void run() { for (int i = 0; i < 5; i++) { while (!sender.isValid原创 2021-09-11 09:36:42 · 91 阅读 · 0 评论 -
java-日常练习-求解为什么volatile 线程锁失效 (已解决)
public class HelloWorld { // public static volatile int account=0; public static void main(String[] args) { Thread thread1=new Thread(){ @Override public void run() { for (int i = 0; i <100000 ; i原创 2021-09-11 08:08:09 · 320 阅读 · 0 评论 -
java-日常练习-利用Boolean值来终止正在运行的线程。
Thread 类提供一个方法stop()来强迫终止线程执行,由于不安全性,我们使用这个方法,直接看代码,都比较简单,不做解释。import static java.lang.Thread.sleep;public class HelloWorld { // static boolean finalStoped = true; public static void main(String[] args) throws InterruptedException {原创 2021-09-05 21:06:55 · 141 阅读 · 0 评论 -
java-日常练习-守护线程总结
守护线程 不会等 守护对象线程,他们没有先后顺序 ,没有守护线程等服务对象线程结束而结束,守护线程运行完即使服务对象线程没有运行完,他也要结束。只有守护线程和守护对象线程同时存在的时候, 服务对象停止了,自然守护线程就崩掉。为了能一直能守护,所以在守护线程写个 死循环 ,监听某个状态,一直做服务。守护线程就是一个服务,被服务对象不存在他也没有存在的意义 随即就消失...原创 2021-09-05 20:50:56 · 108 阅读 · 0 评论 -
java-日常练习-实现类对象排序 (重写compareTo())
package a;import java.util.Arrays;public class HelloWorld implements Comparable<HelloWorld> { // 实现Comparable接口,否则会报错 int a; public HelloWorld(int a) { this.a=a; } @Override public int compareTo(HelloWorld o) {原创 2021-09-03 19:16:17 · 194 阅读 · 0 评论 -
java-日常练习-全面解析java对象clone(介绍对象假clone,浅克隆,深克隆,序列化克隆)
对象假Clone讲讲为什么会有假clone首先要明白基本类型(int,float ,double等) 和引用变量(指向对象的地址)保存在栈中,对象保存在堆中。对于引用变量而言,使用 = 将修改引用 也就是增加一个引用地址,记住不是复制堆中的对象,他们的两个引用地址都是指向同一个对象。总结: 通常情况下,很少使用 = 来操作对象,也很少用 == 比较两个对象 。 引用类型用双等于号基本上都是False。下边我简单写个类,验证上边所说的public class HelloWorld {原创 2021-08-28 16:20:22 · 120 阅读 · 0 评论 -
java-日常练习-重写类的equals 和toString 方法
class Test2 { int age; double slary; String color; public Test2(int age, double slary, String color){ this.age=age; this.slary=slary; this.color=color; } @Override public boolean equals(Object obj){原创 2021-08-24 23:33:52 · 139 阅读 · 0 评论 -
java-日常练习-抽象类总结
抽象类总结规定抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。...原创 2021-08-24 15:15:07 · 83 阅读 · 0 评论 -
java-日常练习-基础类型和引用类型比较
public class HelloWorld { public static void main(String[] args) { double a,b; a=1.3; b=1.3; Double c,d; c=1.3; d=1.3; System.out.println(a==b); System.out.println(c==d); System.ou原创 2021-08-24 14:01:53 · 74 阅读 · 0 评论 -
java-日常练习-统计生成的类对象数量
class Test2 { public static int a=0; public Test2(){ a++; System.out.println("新增了用例数"); } public static int getCount(){ return a; } public static void main(String[] args) { Test2 b= new Test2();原创 2021-08-23 23:16:02 · 589 阅读 · 0 评论 -
java-日常练习-世上最简洁email正则表达式
原来的正则表达式/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;我根据我的实际情况修改后的正则表达式/^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;或者/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/; 字符描述:^ :匹配输入的开始位置。\:将下一个字符标记为特殊字符或字面值。* :匹配前一个字符零次或几次。+ :匹配前一个字符一次或多次。(pattern)原创 2021-08-22 18:48:15 · 171 阅读 · 0 评论 -
java-日常练习-最新版本公司用的校验手机号码正则(不要再找了就它了)
public class HelloWorld { public static void main(String[] args) { while (true){ Scanner scan=new Scanner(System.in); System.out.println("我可以判断你输入的是否为数字,请试试"); String A=scan.nextLine(); String reg原创 2021-08-22 18:34:05 · 94 阅读 · 0 评论 -
java-日常练习-判断字符串是否为数字
package a;import org.apache.commons.lang.math.NumberUtils;import java.util.Scanner;public class HelloWorld { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("我可以判断你输入的是否为数字,请试试");原创 2021-08-22 17:45:48 · 92 阅读 · 0 评论 -
java-日常练习-根据输入的字符串,判断转成大写还是小写
public class HelloWorld { public static void main(String[] args) { Scanner scan=new Scanner(System.in); do { System.out.println("请输入你需要转化的字母"); String a = scan.nextLine(); int countU = 0;原创 2021-08-22 11:17:03 · 276 阅读 · 0 评论 -
java-日常练习-日期格式化常见操作
public class HelloWorld { public static void main(String[] args) { Date date=new Date(); String year=String.format("%tF",date); String month=String.format("%tB",date); String day=String.format("%td",date); String原创 2021-08-22 10:31:19 · 88 阅读 · 0 评论 -
java-日常练习-字符串常见的操作
public class HelloWorld { public static void main(String[] args) { DecimalFormat a= new DecimalFormat("###.##"); double b=343434.544543; String c=a.format(b); System.out.println(c); String d=c.substring(0,c.inde原创 2021-08-21 21:36:45 · 75 阅读 · 0 评论 -
java-日常练习-不同国家的日期格式化
ublic class HelloWorld { public static void main(String[] args) { Date date=new Date(); Locale a = Locale.CHINA; Locale b = Locale.US; Locale c = Locale.JAPAN; ArrayList<Locale> f = new ArrayList<>();原创 2021-08-21 20:54:52 · 433 阅读 · 0 评论