自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来

2017-08-31 13:07:18 6064

原创 jvm引用实例分析(强引用,软使用,弱引用,虚引用)

强引用(Strong Reference)强引用是指在程序代码中普遍存在的,类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。[java] view plain copypublic class StrongReferenceTest {      priva

2017-08-17 01:12:16 2048 1

原创 关于HDFS理解

hadoop中hdfs的结构图HDFS:分布式文件系统被设计成适合运行在通用硬件的分布式文件系统。HDFS是一个高度容错的系统,适合部署在廉价服务器上面,适合应用在集群。下面是HDFS的三个特点:1.超大文件:这里的文件指的是几百Gb甚至几百TB的文件,分别分布在集群中的服务器。而目前已经有存储PB级别的集群了。2.采用流方式进行数据访问:

2017-08-12 00:31:13 451 2

原创 很好的java并发和多线程学习博客

http://blog.csdn.net/ns_code/article/details/17539599

2017-09-04 20:07:15 256

转载 并发新特性—阻塞队列和阻塞栈

转载:http://blog.csdn.net/ns_code/article/details/17511147阻塞队列    阻塞队列是Java 5并发新特性中的内容,阻塞队列的接口是Java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueu

2017-09-04 19:55:45 258

转载 Executor框架简介

Executor框架简介    在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是java 5中引入的,其内部使用了线程池机制,它在Java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了

2017-09-04 18:52:21 224

原创 This逸出

在构造函数中使用内部类,并且代码可能会出现并行。也就是说,当内部类代码执行的时候,外部类对象的创建过程很有可能还没结束,这个时候如果内部类访问外部类中的数据,很有可能得到还没有正确初始化的数据。public class ThreadThisEscape  {      private int weight = 0;        public ThreadThisEscap

2017-09-04 18:13:45 251

原创 内连接和外连接

在之前,我对MYSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。(发这么菜的教程,各位大大们别笑话偶了,呵:D)有两个表A和表B。表A结构如下:Aid:int;标识种子,主键,自增IDAname:varchar数

2017-09-01 00:23:11 227

原创 线程池主要流程和工作原理

java线性吃有什么好处呢线程的创建和销毁是非常耗 CPU 和内存的,因为这需要 JVM 和操作系统的参与。64位 JVM 默认线程栈是大小1 MB。这就是为什么说在请求频繁时为每个小的请求创建线程是一种资源的浪费。线程池可以根据创建时选择的策略自动处理线程的生命周期。重点在于:在资源(如内存、CPU)充足的情况下,线程池没有明显的优势,否则没有线程池将导致服务器奔溃。有很多的理由

2017-08-31 14:57:33 561

原创 TreadLocal用法和实现原理

import java.util.HashMap;public class TreadLocalTest {    static ThreadLocal map0 = new ThreadLocal(){         @Override         protected HashMap initialValue() {             System.out

2017-08-31 14:11:40 869

原创 多线程共享数据 synchronized和使用ThreadLocal区别

synchronized和使用ThreadLocal均可以解决以上的问题,只是这是两种不同的方式,synchronized是依赖锁的机制一个执行完后另一个再执行。ThreadLocal会为每一个线程维护一个和该线程绑定的变量的副本,从而隔离了多个线程的数据,每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。    概括起来说,对于多线程资源共享的问题,同步机制采用了“以时

2017-08-31 14:00:32 226

原创 wait, notify 和 notifyAll 使用

如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例2015/08/04 | 分类: 基础技术 | 7 条评论 | 标签: NOTIFY, NOTIFYALL, WAIT分享到:本文由 ImportNew - 伯乐在线翻译组 翻译自 javarevisited。欢迎加入翻译小组。转载请见文末要求。

2017-08-30 15:22:03 222

原创 Voliate为什么不是原子性

在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量

2017-08-29 20:54:24 2224

原创 java synchronized解读

synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类

2017-08-29 18:54:44 177

转载 线程与进程区别原理分析java编程思想

什么是线程什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把他讲通俗一点,讲的明白一点,因为这是个一直困扰我很久的,扑朔迷离的知识领域,希望通过我的理解揭开它一层一层神秘的面纱。 任务调度线程是什么?要理解这个概念,须要先了解一下操作

2017-08-29 18:38:14 272

转载 jdk 多线程与并发库

public class MultiThread { public static void main(String[] args) { // 通过继承Thread类 Thread thread = new Thread(){ @Override public void run() {

2017-08-29 17:01:41 247

原创 理解wait() sleep() notify()

大家在学习Java的过程中,势必要进行多线程的系统学习,这部分内容知识对于你在工作中的影响是极大的,并且在面试的过程中,这部分知识也是必然会被问到的。既然多线程的知识如此重要,那么我们就不能浅尝辄止。在这篇文章中,我想通过阅读源码的方式给大家分享一下我自己对于Java中wait(),notify()和sleep()的理解,并且在后面我也做一些内容上的扩展,与大家共同思考。如果在文章中有描述不妥或者

2017-08-29 12:16:43 269

原创 notify和notifyall的区别(代码展示)

wait()方法表示,放弃当前对资源的占有权,等啊等啊,一直等到有人通知我,我才会运行后面的代码。 notify()方法表示,当前的线程已经放弃对资源的占有, 通知等待的线程来获得对资源的占有权,但是只有一个线程能够从wait状态中恢复, 然后继续运行wait()后面的语句; notifyAll()方法表示,当前的线程已经放弃对资源的占有, 通知所有的等待线程从wait()方法

2017-08-28 20:33:22 863

转载 Thread和Runable的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2.  通过实现Runnable接口,实例化Thread类     在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看

2017-08-27 22:31:56 224

转载 分析String ,stringbuilder, stringbuffer

长久以来,我们被教导字符串的连接最好用StringBuffer、StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence、StringBuffer、StringBuilder、String,他们之间到底有什么联系呢?1、从类的定义看CharSequence、StringBuffer、StringBuilder、String的关系

2017-08-27 21:55:44 232

转载 java内存区域详解

摘要: 本文基于周志明著作的《深入了解Java虚拟机》描述Java虚拟机内存的各个区域,做些记录方便复习JVM运行时数据区由图所示。虚拟机将所管理的内存分为以下几个部分:程序计数器虚拟机栈本地方法区堆方法区其中方法区和堆是由所有线程共享的,例如使用ThreadPoolExecutor创建多个线程时,堆与方法区都

2017-08-12 21:27:01 193

空空如也

空空如也

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

TA关注的人

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