自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 解决Windows文件删除不了的问题

解决Windows文件删除不了的问题写脚本DEL /F /A /Q \?%1RD /S /Q \?%1 |将删除不了的文件拖到脚本上即可自动执行。

2019-10-31 00:10:32 558

原创 yuan sir generator desk appliacation

1.yuan sir 的后花园2.yuan sir generator desk application.

2019-08-12 23:12:51 155

原创 代理模式

继承的方式实现代理;聚合的方式实现代理;JDK实现聚合代理;代理模式常见的总结2.

2019-08-05 00:16:50 109

原创 lambda表达式的应用

1.函数式接口@FunctionalInterface2.操作实体类3.实现一4.实现二 简写5.排序(非主体lambda)stream()的应用一7. stream()的应用二8. stream()的应用三 map reduce9. 统计聚合函数...

2019-07-23 00:05:09 129

转载 CAS单点登录

原文:https://www.cnblogs.com/lihuidu/p/6495247.html1、基于Cookie的单点登录的回顾基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。 该方式缺点就是多次传送用户名...

2019-07-12 00:39:04 135

原创 线程池的使用建议

一.尽量避免使用Executor框架创建的线程池newFixedThreadPool newSingleThreadExcutor允许的请求最大队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。newCachedThreadPool newSchduledThreadPool允许创建的线程池数量为Integer.Max_VALUE,可能会创建大量的线程,从...

2019-07-12 00:36:54 118

原创 idea生成堆栈文件

2.3.4.必须保存一下5.一直不停的创建任务,超过设置的值6.在E:\neicunfenxi生成一个内存分析的配置文件7.分析这个配置文件heapanalyzer![](https://img-blog.csdnimg.cn/20190527002721985.png)8.下载的jar包点击运行,点击接受9.选择文件加载10.分析得出98%的内存被该队列用了。...

2019-05-27 00:33:37 3979 2

原创 Excutor框架

通过相应的方法,能创建出6种线程池1.ExecutoirService executorService1 = Exectors.newCachedThreadPool();创建一个可以根据需要创建新线程的线程池,如果有空闲线程,优先使用空闲的线程。2.ExecutoirService executorService2 = Exectors.newFixedThreadPool(2);创建一...

2019-05-26 18:22:06 270

原创 线程池自定义拒绝策略

1.拒绝策略类2.main测试主类

2019-05-26 16:57:11 451

原创 线程池核心组成部分及运行机制

corePoolSize:核心线程池大小 cSize,不初始化默认是0个maxinumPoolsSize:线程池最大容量 mSizekeepAliveTime:当线程数量大于核心时,多余的空闲线程在终止之前等待新任务的最大时间。unit:时间单位workQueue:工作队列 nWorksThreadFactory:线程工厂handler:拒绝策略运行机制通过new 创建线程池时,除...

2019-05-16 00:30:12 827

原创 Callable与Runnable

/**Callable与Runnable功能相似,Callable的call有返回值可以返回给客户端,而Runnable没有返回值,一般情况下,Callable与FutureTask一起使用,或者通过线程池的submit方法返回相应的FutureFuture就是对于具体的Runnable或者Callable任务的执行结果进行取消,查询是否完成,获取结果,设置结果操作。get方法会阻塞...

2019-05-14 01:33:57 862

转载 idea快捷键

IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)-----------自动代码--------常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码例如要输入for(User user : users)只需输入user.for+Tab再比如,要输入Date birthday = user.getB...

2019-05-14 00:38:39 74

原创 为什么要使用线程池

诸如WEB服务器,数据库服务器,文件服务器或者邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如HTTP,FTP)通过JMS队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序经常出现的情况是:单个任务处理的时间很短而请求的数目是巨大的。每当一个请求到达就创建一个新线程,然后在新线程中为请求服务,但是频繁的创建...

2019-04-23 23:30:57 125

原创 ThreadLocal的使用

线程变量,是一个以ThreadLocal对象为键,任意对象为值得存储结构。为每个线程单独存放一份变量副本,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。只要线程处于活动状态并且TreadLocal实例可以访问,那么每个线程都拥有对其本地线程副本的隐式引用变量一个线程消失后,它的所有副本线程局部实例受垃圾回收(除非其他存在对这些副本的引用)一般用的比较多的...

2019-04-01 00:24:15 122

原创 Thread.join()通信及其源码解析

Thread.join通信及其源码浅析线程b去执行修改。只有B运行完成之后,A才能继续操作使用场景:线程A执行到一半,需要一个数据,这个数据需要线程。线程A的run方法里面,调用线程B的join方法,这个时候,线程A会等待线程B运行完成之后,再接着运行。join方法等待该线程终止。等待调用join方法的线程结束,再继续执行。如:t.join();//主要用于等待t线程运行结束,若无此句,...

2019-03-31 23:31:31 173

原创 使用管道流进行线程间的通信

1.管道流进行通信其实就是一个线程取数据,一个线程往里面扔数据。以内存为媒介,用于线程之间的数据传输2.主要有面向字节:【PiopedOutputStream.PipedInputStream】面向字符【PipedReader,PipedWriter】...

2019-03-22 00:19:38 268

原创 生产者和消费者

1.生产者消费模型一般包括:生产者、消费者、中间商2.中间商3.生产者4.消费者5.main函数

2019-03-21 00:11:54 123

原创 线程通信wait、notify、notifyAll

1.何时使用在多线程环境下,有时候一个线程的执行,依赖于另一个线程的某种状态的改变,这个时候,我们就可以使用wait与notify或者notifyAll2.wait跟sleep的区别wait会释放持有的锁,而sleep不会,sleep只会让线程在指定的时间内,不去抢占CPU资源。3.注意点:wait notify必须放在同步代码快中,且必须拥有当前对象的锁,既不能取得A对象的锁,而调用B对...

2019-03-20 01:04:08 90

原创 读写锁特性及ReentrantReadWriteLock的使用

特性:写写互斥、读写互斥,读读共享所降级:写线程获取写入锁后可以获取读取锁,然后释放写入锁,这样就从写入锁变成了读取锁,从而实现锁降级的特性。...

2019-03-18 23:09:59 86

原创 idea多线程debug

当ReentrantLockDebugDemo.java 这个类中的main函数创建了多个线程之后,我们可以按照如下设置控制每个线程,否则多个线程控制一个时,其它的都运行完了,1处是设置多个线程debug时,设置所有的线程都在debug队列中。2处是选择debug的类3.是挂起开始dubug4是针对所有线程5.是确认修改6处可以选择具体的哪个线程。...

2019-03-18 21:55:15 302

原创 公平锁和非公平锁的区别

1.公平锁:顾名思义–公平,大家老老实实排队。2.非公平锁:只要有机会就尝试抢占资源3.非公平锁的弊端:可能导致后面排队等待的线程等不到相应的CPU资源,从而引起线程饥饿。...

2019-03-17 22:46:03 3093

原创 lock的使用

1.lock的使用上锁用lock()方法,解锁用unlock()方法。2.lock与synchronized的区别lock获取锁与释放锁的过程,都需要手动的控制lock用的是乐观锁方式,所谓的乐观锁就是,每次不加锁而是假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁的实现机制就是CAS操作。synchronized托管给jvm执行原始采用的是CPU悲观锁机制...

2019-03-17 17:26:08 132

原创 锁的分类

1.自旋锁:线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁的上下文切换不值得。jvm实现,使线程在没有获得锁的时候,不被挂起,转而执行空循环,循环几次之后,如果还没能获得锁,则被挂起。2.阻塞锁:阻塞所改变了线程的运行状态,让线程进入阻塞状态进行等待,当获得相应的信号(唤醒或者时间)时,才可以进入线程的准备就绪状态,转为就绪状态的所有线程,通过竞争,进入运行状态。3.重入锁:支...

2019-03-17 16:38:16 591

原创 如何避免线程安全性问题

A.线程安全性问题成因1.多线程环境2.多个线程操作同一共享资源3.对该共享资源进行了非原子性操作B.如何避免打破成因中三点任意一点1:多线程环境–将多线程改单线程(必要的代码,加锁访问)2:多个线程操作同一共享资源–不共享资源(ThreadLocal,不共享,操作无状态化,不可变)3:对该共享资源进行了非原子性操作-- 将非原子性操作改成原子性操作...

2019-03-17 14:57:01 522

原创 懒汉式线程安全分析

实际操作的时候懒汉式getInstance中进行两次判null和synchronized* 并不能完全保证线程安全,因为它不能防止指令重排序** 所以要在下面的声明是加上volatiel防止指令重排序...

2019-03-17 13:45:49 114

原创 Volatile关键字的使用

能且仅能修饰变量保证该变量的可见性,volatile关键字仅仅保证可见性,并不保证原子性 禁止指令重排序A、B两个线程同时读取volatile关键字修饰的对象A读取之后,修改了变量的值修改后的值,对B线程来说,是可见使用场景1.作为线程的开关2.单利,修饰对象实例,禁止指令重排序。...

2019-03-17 12:39:27 95

原创 synchronized

1.内置锁每个java对象都可以做一个实现同步的锁,这些锁称为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。2.互斥锁内置锁是一个互斥锁,这就意味着最多只有一个线程能够获得该锁,当线程A尝试去获得线程B持有的内置锁时,线程A必须等待或者阻塞,直到线程B释放这个锁,如果B线程不释放这个锁,那么A线...

2019-03-14 00:18:07 125

原创 线程的原子性操作

1.原子性操作:一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。2.如何把非原子性操作变成原子性给执行的方法加上synchronized或者锁等 ,让其依次执行。...

2019-03-13 22:40:31 163

原创 线程的安全性问题

1.什么是线程安全性?当多个线程访问某个类,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类为线程安全的。–《并发编程实战》2.线程不安全多线程并发访问时,得不到正确的结果例如:https://mp.csdn.net/mdeditor/88146879#3.从字节码的角度分析线程不安全的原因...

2019-03-11 23:07:30 156

原创 守护线程

1.线程的分类《1》. 用户线程:即普通的线程《2》. 守护线程:任何一个守护线程都是整个程序中所有用户线程的守护者,只要有活着的用户线程,守护线程就活着。当JVM实例中最后一个非守护线程结束时,也岁JVM一起退出。2.守护线程的用处:JVM垃圾清理线程3.建议:尽量少使用守护线程,因其不可控不要在守护线程里去进行读写操作,执行计算逻辑test示例两秒之后守护线程随着用户线程的执行...

2019-03-11 22:21:10 82

原创 线程的优先级setPriority

1.线程的优先级告诉程序该线程的重要程度有多大。如果有大量的线程都被阻塞,都在等候运行,程序会尽可能地先运行优先级高的那个线程。但是,这并不表示优先级较低的线程不会运行。若线程的优先级较低,只不过表示它被准许运行的机会小一些而已。2.现成的优先级设置可以为1-10的任意数值,Thread类中定义了三个线程优先级,分别是:MIN_PRIORITY(1),NORM_PRIORITY(5)(默认值),...

2019-03-11 21:07:54 269

原创 线程wait()和notify(),notifyall()使线程处于挂起状态 和唤醒线程

名词解释A.wait():暂停执行、放弃已经获得的锁,进入等待状态;notify():随机唤醒一个在等待锁的线程;notfyall():唤醒所有在等待锁的线程,自行抢占cpu资源;适合使用线程挂起:等待某些没有就绪的资源1.如下图所示,使用锁waitObject,则也要用waitObject调wait()和notify&&notifyall()方法下面的执行结果表明 ...

2019-03-10 23:41:18 840

原创 模拟死锁(suspend)

1.正常的场景,正常的执行完毕2.死锁的状态下图中控制台输出的内容只有三行这是因为1处执行start()之后,接着2处的resume()释放锁先执行了,3处的挂起线程最后执行了,所以导致了死锁;2和3执行顺序的不确定性,导致执行结果可能是死锁...

2019-03-10 21:52:35 252

原创 线程的挂起与恢复suspend()&&reusume()

1.什么是线程挂起,线程挂起操作实质上就是线程进入到“”非可执行“”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。在线程挂起后,可以通过重新唤醒线程来使之恢复运行2.为什么要挂起线程CPU分配的时间片非常短,同时也是非常珍贵,避免资源的浪费3.如何挂起线程thread.suspend();(被废弃的方法,容易造成死锁所以被废弃,并且挂起不会释放该线...

2019-03-10 21:01:30 204

原创 lambda表达式创建 && 线程池创建线程 &&线程

1.lambda表达式创建线程2.匿名内部类创建线程注意为调用start的方法,下图只是参考不准3.使用线程池创建一个线程在这里插入代码片

2019-03-10 19:46:11 1118

原创 线程的run方法执行后的效果(及run方法与start方法的区别)

只有调用线程的start()方法才会启动线程,例如,下面的没有调用start()方法,而只是调用了run()方法,运行后打印的线程的名称是主线程的名称。run方法与start方法的区别1 java中多线程有两个常见的方法start方法和run方法。正常来说run方法是多线程的线程体。2 创建线程,可以使用extends Thread和implements Runnable如:publi...

2019-03-04 23:53:11 755

原创 线程的两种创建方式

1.集成Thread,并重写父类的run方法2.实现Runnable接口

2019-03-04 23:46:05 84

原创 UnSafeThread 并发编程线程不安全示例

下面图片的运行结果是1000但是如果不用CountDownLatch&& while(true){if (countDownLatch.getCount() == 0){直接打印num++的话,运行结果就是0,因为线程虽以创建,但是下面主线程的代码会先执行。2....

2019-03-04 23:41:11 291

转载 CountDownLatch共享锁实现原理

CountDownLatch共享锁实现原理2018年05月14日 11:48:09 带带大师兄- 阅读数:87CountDownLatch使用解说CountDownLatch是java5中新增的一个并发工具类,其使用非常简单,下面通过伪代码简单看一下使用方式:这里写图片描述这是一个使用CountDownLatch非常简单的例子,创建的时候,需要指定一个初始状态值,本例为2,主线程调用 l...

2019-03-03 16:21:08 192

原创 模拟线程的死锁 && 该线程堆栈的分析

public class DeadLuckDemo {private static final Object HAIR_A = new Object();private static final Object HAIR_B = new Object();/** * 线程死锁 * @param args */public static void main(String[] arg...

2019-03-02 21:01:12 170

BaiduNetdisk.zip

BaiduNetdisk.zip

2023-07-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除