上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通 阅读全文
posted @ 2015-10-04 13:00 五月的仓颉 阅读(10604) 评论(8) 推荐(7) 编辑
摘要: 前言 死锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可能要执行数十亿次获取锁->释放锁的操作,只要在这数十亿次操作中只要有一次发生了错误,就可能导致程序中发生死锁,并且即使通过压力测试也不可能找出所有潜 阅读全文
posted @ 2015-10-03 18:54 五月的仓颉 阅读(30773) 评论(15) 推荐(31) 编辑
摘要: 同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 写三个线程分别调用这三个方法: 写个main函数启动这三个线程: 看一下运行结果: 从运行结果来,对printC( 阅读全文
posted @ 2015-10-03 18:20 五月的仓颉 阅读(7524) 评论(24) 推荐(1) 编辑
摘要: synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchronized同步语句块来解决问题。看一下例子: 运行结果,分两部分来看: 这个实验可以得 阅读全文
posted @ 2015-10-03 15:08 五月的仓颉 阅读(16248) 评论(11) 推荐(4) 编辑
摘要: Class.forName(String name) 接上一篇JDBC。本来这个内容是放在前面的一篇里面的一起的,后来发现越写越多,想想看就算了,还是单独开一篇文章好了,这样也能写得更加详细点。 上一篇文章的第4点,getConnection()方法里面,我把从.properties里面获取mysq 阅读全文
posted @ 2015-10-02 11:11 五月的仓颉 阅读(6971) 评论(5) 推荐(5) 编辑
摘要: 什么是JDBC JDBC(Java Database Connectivity),即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供同一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,根据这种基准可以构建更高级的工具和接口,使数据库开发 阅读全文
posted @ 2015-10-02 10:24 五月的仓颉 阅读(7905) 评论(8) 推荐(3) 编辑
摘要: 脏读 一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。 多线程线程安全问题示例 看一段代码: 写两个线程分别去add字符串"a"和字符串"b": 写一个主函数分别运行这两 阅读全文
posted @ 2015-10-01 20:29 五月的仓颉 阅读(10572) 评论(12) 推荐(3) 编辑
摘要: Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程"。为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作。下面来看一下Thread类中的静态方法: 1、currentThread() currentThread()方 阅读全文
posted @ 2015-10-01 18:36 五月的仓颉 阅读(8570) 评论(9) 推荐(3) 编辑
摘要: Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步。在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: (1)this.XXX() 这种调用方式表示的线程是线程实例本身 (2)Thread.currentT 阅读全文
posted @ 2015-10-01 17:55 五月的仓颉 阅读(18635) 评论(8) 推荐(6) 编辑
摘要: 进程和线程 谈到多线程,就得先讲进程和线程的概念。 进程 进程可以理解为受操作系统管理的基本运行单元。360浏览器是一个进程、WPS也是一个进程,正在操作系统中运行的".exe"都可以理解为一个进程 线程 进程中独立运行的子任务就是一个线程。像QQ.exe运行的时候就有很多子任务在运行,比如聊天线程 阅读全文
posted @ 2015-10-01 16:38 五月的仓颉 阅读(11252) 评论(8) 推荐(16) 编辑
摘要: 十年前你是谁,一年前你是谁,甚至昨天你是谁,都不重要。重要的是,今天你是谁,以及明天你将成为谁。 也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己。我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员。 自勉、共勉 永 阅读全文
posted @ 2015-10-01 12:23 五月的仓颉 阅读(2650) 评论(10) 推荐(8) 编辑
摘要: 前言 初次碰到这个问题是之前有一次电话面试,问了一个小时的问题,其中有一个问题就问到Comparable和Comparator的区别,当时没答出来。之后是公司入职时候做的一套Java编程题,里面用JUnit跑用例的时候也用到了Comparator接口,再加上JDK的大量的类包括常见的String、B 阅读全文
posted @ 2015-10-01 11:34 五月的仓颉 阅读(8305) 评论(3) 推荐(12) 编辑
摘要: 为什么要自定义类加载器 类加载机制:http://www.cnblogs.com/xrq730/p/4844915.html 类加载器:http://www.cnblogs.com/xrq730/p/4845144.html 这两篇文章已经详细讲解了类加载机制和类加载器,还剩最后一个问题没有讲解,就 阅读全文
posted @ 2015-09-29 21:20 五月的仓颉 阅读(16080) 评论(8) 推荐(21) 编辑
摘要: 类与类加载器 虚拟机设计团队把类加载阶段张的"通过一个类的全限定名来获取此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为"类加载器"。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限定于类加载 阅读全文
posted @ 2015-09-29 20:03 五月的仓颉 阅读(7179) 评论(3) 推荐(3) 编辑
摘要: 前言 我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用。而虚拟机如何加载这些.class文件?.class文件的信息进入到虚拟机后会发生什么变化?这些都是本文要讲的内容,文章将会讲解加载类加载的每个阶段Java虚拟机 阅读全文
posted @ 2015-09-28 21:50 五月的仓颉 阅读(13829) 评论(23) 推荐(11) 编辑
摘要: 前言 定位系统问题的时候,知识、经验是基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照、堆转储快照等。经常使用适当的虚拟机监控和分析的工具可以加快分析数据、定位解决问题的速度。 jps:虚拟机进程状况工具 首先约定一下运行的代码都是以下这段 J 阅读全文
posted @ 2015-09-27 18:48 五月的仓颉 阅读(4946) 评论(0) 推荐(0) 编辑
摘要: 前言 Object提供给我们了一个Native的方法“public native int hashCode();”,本文讲讲Hash是什么以及HashCode的作用 Hash 先用一张图看下什么是Hash Hash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值 阅读全文
posted @ 2015-09-27 13:23 五月的仓颉 阅读(20086) 评论(13) 推荐(11) 编辑
摘要: 前言 有这么一段代码: 运行结果是什么?答案当然是true。对,答案的确是true,但是这是为什么呢?很多人第一反应肯定是两个"123"的String当然相等啊,这还要想。但是"=="在Java比较的不是两个对象的值,而是比较两个对象的引用是否相等,和两个String都是"123"又有什么关系呢?或 阅读全文
posted @ 2015-09-26 22:57 五月的仓颉 阅读(7838) 评论(18) 推荐(11) 编辑
摘要: 前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数。垃圾收集器组合一般就是Serial+Serial Old和Parallel+Serial Old, 阅读全文
posted @ 2015-09-26 19:35 五月的仓颉 阅读(5712) 评论(7) 推荐(2) 编辑
摘要: 前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露、并行与并发、Client模式和Server模式、Minor GC和Full GC,本文详细讲解下这些概念的区别。 内存溢出和内存泄露的区别 1、内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了。 2 阅读全文
posted @ 2015-09-26 12:42 五月的仓颉 阅读(7202) 评论(8) 推荐(4) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页