自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Thread学习(十)无缓冲队列synchronousQueue,优先级队列PriorityBlockingQueue

BlockingQueuesynchronousQueue学习SynchronousQueue是无界的,是一种无缓冲的阻塞队列,插入操作必须等待令一个线程取数据,反之亦然(SynchronousQueue是线程安全的,是阻塞的)。同步队列没有任何内部容量,甚至连一个队列的容量都没有。公平模式: SynchronousQueue会采用公平锁,并配合一个FIFO队列来阻塞多

2016-11-29 11:47:33 760

原创 Thread学习(九) 并发的Queen学习ArrayBlockingQueue,LinkedBlockingQueue

并发的Queue在并发队列上,JDK实现了两套实现,一套是以ConcurrentLinkedQueue为代表的高性能非阻塞队列,另一套是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典

2016-11-29 10:35:50 1833

原创 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推

这三个线程分别为A,B,C,我们可以把这三个线程当成父,子,孙三个线程,每个线程要循环输出十次。然后要有一个类去完成他们的任务就是输出当前线程的名字,然后我们可以用condition实现三个线程的交替输出。/** * 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C, * 每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示; * 如:ABCABC….依

2016-11-25 09:45:15 3489

原创 如何创建线程安全的单例模式?线程安全的Singleton!

单例模式的概念单例模式就是确保只有一个实例,而且自行实例化并向整个系统传递这个实例,这个类就称作为单例类单例模式最重要的一个特点就是构造方法私有化。创建单例模式分为懒汉式和饿汉式。第一种:懒汉式(线程不安全的)传统的懒汉式创建单例模式,是线程不安全的public class Singleton { private static Singleton insta

2016-11-24 16:59:35 5250

原创 Thread学习(八) ThreadLocal实现线程范围内的共享变量

什么叫线程范围内的共享数据(线程外独立)?一个线程在运行的时候可以调用A模块,B模块,C模块,就比如我们调用A,B,C三个对象,A,B,C三个模块内部的代码就要访问外面的变量,那么此时如果我们把ABC调用的那个变量设置成static的静态变量,我们也可以实现让ABC同时访问同一个变量,但是如果我们用第二个线程去同时调用ABC去访问这个变量,这时候第二个线程访问到的这个变量就不是刚才我们线程1所

2016-11-24 15:13:43 4755

原创 Thread学习(七) 用读写锁ReadWriteMethod实现个简单的例子,cache缓存的原理

所谓缓存机制其实就是类似一个map,你传入一个key,然后程序会通过你这个key去缓存中找对应的value,如果这个value不存在,那么就去数据库中找这个value,如果此时有多个线程同时访问这个缓存的话就会存在并发的问题,在将要写的时候去读出了数据,在将要读数据的时候进行了写入数据,那么此时我们就应该用到读写锁。public class CacheDemo { public static

2016-11-22 14:37:26 536

原创 Thread学习(六)读写锁的学习ReadWriterLock学习

Thread中读写锁读写锁,分为读锁和写锁,多个读锁不互斥,读锁和写锁互斥,写锁和写锁互斥,其实很好理解,就是读的时候不能多线程去写,读的时候可以多线程去读,写的时候不能多线程去写。这是由jvm自己控制的,你只要上相应的锁就行了,如果你的代码是只读数据,可以很多人去读,但不能同时写,那就上读锁,如果你的代码修改数据,那就上写锁,只能有一个人在写,不能有人在写得时候读数据。下面我们来看一个关

2016-11-22 14:24:05 2004

原创 Thread学习(五)Callable与Future的应用

Callable与Future的应用submit提交一个任务 Callable接口代表一段可以调用并返回结果的代码;Future接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable用于产生结果,Future用于获取结果。 Java 5在concurrency包中引入了Java.util.concurrent.Callable 接口,它和Runnable接口

2016-11-19 11:58:49 434

原创 Thread(四)java线程池学习笔记(一)

java线程池什么是线程池?(摘抄自百度知道) 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。    如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。                一个线程池包括以下四个基本组成部分:                1、线程池管理器(ThreadPool):用于

2016-11-17 15:59:15 673

原创 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程

学习思路:1、先学习第一套或者第二套架构师课程,帮助没有基础或基础学得不好的同学建立架构师思维,整套需要全部学习,很重要!!2、根据工作需要,分别去学习第二套、第三套里的实战课程里的知识点,不需要全部全学习,那么多资料你没有那么多精力全部学完!!对比内容:本套课包含像Dubbo,Netty,Nio,Mina,Mecached,Nosql,MongoDB, Nginx, Active...

2016-11-17 14:23:19 582

原创 Thread学习(三)多个线程访问共享对象和数据的方式

1.如果每个线程执行的代码相同,可以使用同一个Runable对象,这个Runable对象中有那个共享数据,例如卖票系统就可以这样做。2.如果每个线程执行的代码不相同,这个时候需要用到不同的Runable对象,有如下两种方式实现多个Runable对象中的数据共享。(1)将共享数据封装在另一个对象中,然后将这对象逐一传递给各个Runable对象,每个线程对共享数据的操作方法也交给那个对象去进行

2016-11-16 10:33:11 1328

原创 Thread多线程学习(二),java多线程中synchronize锁的使用和学习

synchronize我的理解是为了保证程序中的原子性和一致性,即当你有两个线程同时操作一段代码的时候,要让这段代码的执行是在任何状态下都是正确的,首先要保证synchronize的使用要对同一个对象和同一把锁使用。public class TraditionalThreadSynchronized { public static void main(String[] args) {

2016-11-15 11:12:36 2196

原创 java多线程学习笔记(一)!更好的理解多线程

1.线程的创建之前知道java中一个多线程的创建方法是继承Thread类或者实现Runable接口,但是看不懂下面这种创建线程的方法第一种new Thread(new Runnable() { @Override public void run() { } } }).start();//这种方式中new Thread()是创建了一个线程,而new

2016-11-15 09:56:01 1467 2

转载 linux初学者常用命令

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题。1、显示日期的指令: date2、显示日历的指令:cal3、简单好用的计算器:bc

2016-11-04 11:11:28 517

空空如也

空空如也

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

TA关注的人

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