自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jiq•钦's technical Blog

学习 -> 记录 -> 分享

  • 博客(12)
  • 收藏
  • 关注

原创 Java并发:线程安全的容器:同步和并发

转载请注明出处:1. 引言多线程环境正确发布共享数据的方法之一就是线程安全容器。线程安全的容器是由锁保护的域,将数据放入线程安全的容器中,可以保障其被安全地发布给所有从这个容器访问它的线程。2. 同步容器类JDK1.0开始有两个很老的同步容器类:Vector和HashTable。JDK1.2之后Collections工具类中添加了一些工厂方法返回类似的同步封装器类:public static C

2016-03-31 22:20:00 3935

原创 Java并发:互斥锁和读写锁

互斥锁线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁,当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。互斥锁其实提供了一种原子操作,让所有线程以串行的方式执行同步代码块。可重入性:某个线程试图获得一个已经由它自己持有的锁,那么这个请求就会成功(重复获取),这就叫互斥锁的可重入性。“重入”意味着获取锁的操作的粒度是“线程”,而不是调用,也就是说一个线程中可以

2016-03-29 22:59:06 8442 1

原创 Java并发:并发编程带来的好处和风险

并发编程之所以让人迷惑是因为有不止一种问题的解决需要使用并发,也有不止一种方法去实现并发,而且他们之间也没有清晰的映射。使用并发编程来解决的问题可以划分为两类,即“speed”和“designmanageability”。 一、速度优势:多处理器:多处理器上面并发变成无疑会让程序运行很快。单处理器:如果是单处理器的机器,那么并发编程可能相对于顺序编程没有什么变化。但是,如果其中某一个任务也许会发生

2016-03-29 00:31:15 3239

原创 Java并发:终止线程和关闭线程池

一、任务的取消1.1标志位class ThreadOne implements Runnable{ public volatile boolean isComplete = false; @Override public void run() { while(!isComplete) { } } }这种方

2016-03-29 00:09:18 34810 2

原创 Java并发:三种线程抽象以及线程执行

在Java 5之后,任务分两类:一类是实现了Runnable接口的类,一类是实现了Callable接口的类。两者都可以被ExecutorService执行,但是Runnable任务没有返回值,而Callable任务有返回值。此外还有一个FutureTask任务类型以拓展Runnable和Callable。一、Runnable任务抽象考虑一个处理客户端请求的服务器程序:1.1 Thread方式通常我

2016-03-27 18:15:58 1848

原创 Java并发:可重入与线程安全

转载请注明出处:jiq•钦'stechnical Blog1函数的可重入性:函数可重入,意味着该函数可以同时由多个任务调用,而不会产生任何错误。可重入的函数不需要考虑线程安全问题,因为其不会引用任何共享数据。 可重入函数需满足几个条件:1、不能含有静态(全局)非常量数据2、不能返回静态(全局)非常量数据的地址。 3、只能处理由调用者提供的数据。4、不能依赖于单实例模式资源的锁。 5、不能调用不可重

2016-03-27 02:27:43 1457

原创 Java并发:如何编写线程安全的代码

转载请注明出处:jiq•钦'stechnical Blog一切线程安全问题都是源自于不正确的共享数据导致。方式一:编写可重入代码编写可重入代码,即编写那些压根不会共享数据的代码。编写可重入代码包括借助线程本地存储这一特性:线程本地存储* 是一种自动化机制,可以为使用同一个变量的所有线程都创建一个各自不同的存储。 * 最主要的是,他可以使得你将状态与线程关联起来。private static Thr

2016-03-27 02:24:08 1406

原创 Java并发:线程安全的单例模式

转载请注明出处:jiq•钦'stechnical Blog1、饿汉式public class Singleton {  private final static Singleton INSTANCE = new Singleton();  private Singleton() { }  public static Singleton getInstance() {     return INST

2016-03-26 22:40:36 1345

原创 Java并发:volatile内存可见性和指令重排

转载请注明出处:jiq•钦'stechnical Blogvolatile两大作用1、保证内存可见性2、防止指令重排 此外需注意volatile并不保证操作的原子性。内存可见性1 概念         JVM内存模型:主内存和线程独立的工作内存Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存(比如CPU的寄存器),线程只能访问自己的工作内存,不可以访问

2016-03-26 22:34:56 15551 5

转载 TCP SYN攻击

部分内容转自这里一、三次握手建立连接和四次握手断开连接建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。【问题1】为

2016-03-25 00:00:56 1673

原创 自己理解的“数据库事务隔离级别”

转载请注明出处: jiq•钦's technical Blog - 季义钦引言:在网上搜了很多关于事务的文章,感觉单独来看都很难看懂,所以综合自己的理解写一篇我自己能理解的关于关系型数据库事务的文章。一、事务特征我们都知道数据库事务具备ACID特性:Atomic(原子性):一个事务要么成功,要么失败Consistency(一致性):一致性代表了底层数据存储的完整性。事务执行前后数据库都必须处于一个

2016-03-24 00:24:04 3115

原创 多个进程能否监听同一个端口号?

我们都知道socket是网络上两个进程之间的双向通信链路, 即socket = A进程的IP地址:端口号  B进程的IP地址:端口号。 那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么?根据Unix网络编程中的知识可知,服务端监听一个端口会经历:1、根据套接字类型(Ipv4,Ipv6等)创建套接字socket2、将套接字bind绑定到具体的网络地址和端口号3、调用liste

2016-03-22 22:58:55 23655 3

空空如也

空空如也

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

TA关注的人

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