mymilkbottles

越努力,越幸运! 以现在大多数人的努力程度之低,根本轮不到可以拼天赋。...

为什么HashMap中key需要为不可变对象

我们都提倡HashMap中key需要为不可变对象,但是事实上,如果你硬要将HashMap的key为可变对象也是可以的,但是这样会带来很多潜在的危险。HashMap<List<String>, Object> changeMap = new HashMap<>()...

2017-07-31 17:17:15

阅读数:362

评论数:0

mysql计数器表

在web应用中,计数器是非常常见的,如访问量计数,文件下载计数等。那么我们可以创建一张表来进行计数:create table counter ( cnt int unsigned not null ) 我们更新的时候只需要对这一行更新就行了,但是这样的做法在并发情况下性能很差,因为对于一个...

2017-07-28 22:03:13

阅读数:140

评论数:0

关于solr的多字段高亮问题

我们在使用solr的时候,难免碰到使用多字段的高亮问题。 比如: 我们solr的字段创建是这样的:<entity name="weibo" query="select id, content from weibo"> <...

2017-07-27 17:22:49

阅读数:1476

评论数:0

java中的锁

Lock接口锁是用来控制多个线程访问共享资源的方式。一般来说,一个锁能够防止多个线程同时访问共享资源(有的锁允许,比如读写锁)。在java 5之后,并发包新增了Lock接口用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显示地获取和释放锁。虽然它缺少了(通过...

2017-07-20 13:24:14

阅读数:202

评论数:0

队列同步器

队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其它同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,在抽...

2017-07-19 23:38:30

阅读数:74

评论数:0

并发编程基础

现代操作系统在运行一个程序的时候会为其创建一个进程。现代操作系统调度的最小单元是线程(又名轻量级进程)。java程序天生就是多线程程序,因为执行main方法的是一个名为main的线程。package Study01;import java.lang.management.ManagementFac...

2017-07-18 20:10:10

阅读数:173

评论数:0

多线程基础知识

java多线程进程什么是进程进程是操作系统结构的基础,是资源分配的基本单位,也是独立运行的基本单位。进程的两个基本属性 进程是一个拥有资源的独立单位 进程同时是一个可以被处理器独立调度和分配的单位 为什么会有线程?操作系统为了能让进程并发执行,还需要创建进程、撤销进程和进程切换,进行这些操作时, ...

2017-07-17 19:53:25

阅读数:80

评论数:0

SimpleDateFormat非线程安全

类SimpleDateFormat主要负责日期的装换和格式化,但在多线程的环境中,使用此类容易造成数据转换及处理的不准确,因为SimpleDateFormat类并不是线程安全的。package me.mymilkbottles.Study11;import java.text.ParseExcep...

2017-07-17 17:25:58

阅读数:99

评论数:0

多线程基础知识

java多线程进程什么是进程进程是操作系统结构的基础,是资源分配的基本单位,也是独立运行的基本单位。进程的两个基本属性 进程是一个拥有资源的独立单位 进程同时是一个可以被处理器独立调度和分配的单位 为什么会有线程?操作系统为了能让进程并发执行,还需要创建进程、撤销进程和进程切换,进行这些操作时, ...

2017-07-17 17:05:10

阅读数:88

评论数:0

单例模式和多线程

package me.mymilkbottles;import java.io.*;/** * Created by Administrator on 2017/07/17 15:14. */ public class SingletonParrern { public static ...

2017-07-17 16:46:00

阅读数:80

评论数:0

定时器Timer

定时器Timer的使用Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一任务。Timer类的主要作用就是设置计划任务,但封装任务的类却是TimeTask类。package me.mymilkbottles.Study10;import java.text.ParseExceptio...

2017-07-17 15:12:30

阅读数:107

评论数:0

Lock

在jdk1.5中新增了ReentrantLock实现同步,并且在扩展上也更加强大,比如有嗅探锁定、多路分支通知等功能。在使用上比synchronized更加的灵活。调用ReentrantLock对象的lock方法获得锁,调用unlock方法释放锁。package me.mymilkbottles....

2017-07-17 13:23:12

阅读数:139

评论数:0

线程间通信

等待、通知机制的实现方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。在调用wait()之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同...

2017-07-16 20:49:55

阅读数:148

评论数:0

生产者消费者模式

生产者、消费者模式1、一生产与一消费,操作值package me.mymilkbottles.Study04;import java.util.Date;/** * Created by Administrator on 2017/07/16 8:29. */ public class One...

2017-07-16 20:49:04

阅读数:161

评论数:0

使用wait、notify、notifyAll需要注意的地方

使用wait、notify、notifyAll需要注意的地方:如果不遵从一下两点,则会出现IllegalMonitorStateException异常。1、必须拥有对象的锁(使用这些方法时需要在synchronized块或方法中)package me.mymilkbottles.Study06;/...

2017-07-16 15:24:18

阅读数:188

评论数:0

对象及变量的并发访问

非线程安全就是在多个线程对同一个对象的实例变量进行并发访问时产生的,产生的后果就是“脏读”。方法内的变量是线程安全的,因为方法内部的变量是私有的。只由对共享资源的读写访问才需要同步化。关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁。脏读一定会出现操作实例变量的情况下...

2017-07-15 19:05:25

阅读数:140

评论数:0

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