09 2018 档案
摘要:Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP。 一般分为两种情况: 方式一、客户端未经过代理,直接访问服务器端(nginx,squid,haproxy); 方式二、客户
阅读全文
摘要:CountDownLatch:等待多线程完成 CountDownLatch允许一个或多个线程等待其他线程完成操作。 假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成
阅读全文
摘要:并发执行任务 1 import java.util.concurrent.ExecutionException; 2 import java.util.concurrent.ForkJoinPool; 3 import java.util.concurrent.ForkJoinTask; 4 imp
阅读全文
摘要:Executor线程池框架: 使用线程池的优点: 1、重用存在的线程 2、减少对象创建、消亡的开销 3、性能佳 4、可有效控制最大并发线程数,提高系统资源的使用率 5、避免过多资源竞争,避免堵塞 6、提供定时执行、定期执行、单线程、并发数控制等功能 介绍: 1、Executor框架便是Java 5中
阅读全文
摘要:SimpleDateFormat-多线程问题: SimpleDateFormat类在多线程环境下中处理日期,极易出现日期转换错误的情况 1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import j
阅读全文
摘要:使线程具有有序性: 线程在运行时多个线程之间执行的时机是无序的,下面通过改造代码实现运行具有有序性: 1 /** 2 * 线程类 3 */ 4 public class MyThread extends Thread { 5 private Object lock; 6 private String
阅读全文
摘要:单例模式-多线程环境 单例-立即加载: 1 /** 2 * 单例模式,立即加载 3 */ 4 public class MyObject { 5 6 private static MyObject myObject = new MyObject();//立即加载(类加载的时候就已经实例化好了) 7
阅读全文
摘要:schedule与scheduleAtFixedRate: 不延时: schedule(TimerTask, Date runDate, long period)方法任务不延时 Date类型 1 import java.util.Calendar; 2 import java.util.Date;
阅读全文
摘要:Timer定时任务相关: 情景1:定时任务执行时间为当前运行程序启动10秒之后 1 import java.util.Date; 2 import java.util.TimerTask; 3 4 /** 5 * 定时任务类,继承TimerTask类 6 */ 7 public class MyTa
阅读全文
摘要:Condition实现多线程顺序打印: 1 import java.util.concurrent.locks.Condition; 2 import java.util.concurrent.locks.ReentrantLock; 3 4 public class Run { 5 6 volat
阅读全文
摘要://ThreadLocal类提供的方法1 public T get() {} //get()方法是用来获取ThreadLocal在当前线程中保存的变量副本 2 public void set(T value) {} //set()用来设置当前线程中变量的副本 3 public void remove
阅读全文