本月博客排行
年度博客排行
-
第1名
宏天软件 -
第2名
龙儿筝 -
第3名
青否云后端云 - wallimn
- vipbooks
- gashero
- wy_19921005
- benladeng5225
- fantaxy025025
- zysnba
- ssydxa219
- e_e
- javashop
- sam123456gz
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- xiangjie88
- wiseboyloves
- ganxueyun
- lemonhandsome
- xyuma
- sichunli_030
- wangchen.ily
- jh108020
- zxq_2017
- jbosscn
- Xeden
- zhanjia
- johnsmith9th
- forestqqqq
- luxurioust
- lzyfn123
- ajinn
- nychen2000
- wjianwei666
- daizj
- hanbaohong
- 喧嚣求静
- ranbuijj
- silverend
- kingwell.leng
- lchb139128
- kristy_yy
- lich0079
- jveqi
- java-007
- sunj
- yeluowuhen
最新文章列表
深入JVM锁机制之一:synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进 ...
4、java.lang.Thread线程类
一、如何在自定义的代码中,自定义一个线程呢?
通过对api的查找,发现java已经提供了对线程这类事物的描述。就是Thread类
二、Thread类
线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。
public class Thread implements Runnable
{
//变量----------- ...
Java中Synchronized的使用注意事项
转自:http://www.blogjava.net/freeman1984/archive/2011/10/17/361403.html
在Java1.5之前,synchronized应该是最常用的java支持并发手段。那synchronized是怎么做到的了,从java1.0开始,java中的每个对象就一个内部锁。如果一个类的方法被synchronized关键字所修饰,那么这个对象的锁将保护整个 ...
lock 锁class类对象和实例对象
java thread 线程中 的synchronized关键字 可以放到方法上,也可以修饰对象上
eg:
private synchronized void testSyncMethod() {
//当线程执行到此处时,它必须获得一个锁,此时锁定的对象是:调用此方法的对象a
}
private void testSyncMethod() {
synchronized ...
Chapter 14. Multithreading
1. The essential difference between multiple processes and multiple threads is that while each process has a complete set of its own variables, threads share the same data. However, shared variables ...
多线程访问 资源的安全控制
对于线程安全,大家都知道使用synchronized控制访问的资源,有变量安全、方法安全、块安全。
我这里有个需求是这样的,我这里作为服务端有很多客户端与我进行交互,服务端也会主动发消息给客户端,但是要求每次交互时只能有一个用户。也就是说发送一组信息、等待信息、处理信息返回时这个链路只能有一个人使用。
也许大家马上会想到这样写:
synchronized (ThreadT.devIp ...
JAVA线程模型
线程模型
一、同步模型
最常见的例子就是银行取款,A,B两个人分别在银行对一个账户进行取款操作,账户仅有1000余额,当同事点击取款1000的按钮时,银行会怎样处理呢?
每个人都查询到了余额1000元没错,即使同时取款,也会有一方不成功的,否则的话,银行会被搞垮的,他才没那么笨,但是这该如何实现呢?
1、synchronized同步关键字
这里涉及到多个线程对共享资源进行处理,这里就必须要给线 ...
多线程同步小例子,100张票3个窗口同时销售
公司不能登录,很久不发博客,今天偶然看到多线程,发现自己同步用的不好,简单写个例子用synchronized 关键字的例子,100张票 3个窗口同时销售。另外加锁也可以用Lock 接口的实现类,此处不做拓展,可参考Java核心 基础卷
直接上代码。
package com.learning.test;
public class TestMutithread {
publ ...
使用visual vm 分析线程(下)
接着上一篇《线程安全扫盲贴三》,开始第二次测试。
第二次测试
这次并发1000个客户端消息,每次并发20条后休眠1秒。客户端消息发给我的Server后,我的Server再转发给消息指定的服务器。为了产生异常消息,我将指定的目标服务器关闭了,于是每次消息第一次发送完成后,都成为了一个异常消息,每个异常消息将会自动间隔30s;1m;2m发送3次,发送失败后停止发送。
这样虽然是并发了1000个 ...
使用visual vm 分析线程(上)
网上很多visual vm的指南手册之类,visual vm最新的下载好后,直接运行即可。
如果无法运行,在右键选择要执行的类,选择Run As-->Open Run Dialog,在新窗口中选择Arguments标签。
vm参数上增加:-XX:+PerfBypassFileSystemCheck
【代码背景介绍——4个线程】
客户端向我的Server中发送消息,我的 ...
线程安全扫盲贴二——锁详解
上篇提了一点: 由于内部锁是基于线程而非调用的,当一个线程执行increase方法时,已经拿到了counter对象引用的锁,那么其他线程执行同一个对象的increase或increase2会堵塞等待counter对象锁。
这里涉及到线程的重进入机制,如果线程A进入了increase,那么它已经拿到了counter的对象锁,那么该线程也可以进入increase2,因为这里的increase ...
关于ThreadLocal
关于ThreadLocal
文章介绍了ThreadLocal 的实现原理,并讲述了使用ThreadLocal替代synchronized的好处
同时配有相关的例子,也介绍了spring如何实现session管理以及ThreadLocal在完成多个web请求返回对应的结果的例子
http://baike.baidu.com/view/4498010.htm
线程安全扫盲贴一——什么是线程安全
线程的系统都写完了,遇到很多问题,刚开始写到处都在synchronized,跌倒又爬起来,现在回过头来看看JAVA并发实践,开始整理下。
《JAVA并发编程实践》说线程安全就是,在单线程执行时候,实例状态是正确的,在多线程执行的时候,状态仍要正确:
a class is thread-safe when it continues to behave correctly when acces ...
java-synchronized修饰方法释疑
java里面用synchronized修饰方法时:
对于同一个对象的来说
调用synchronized修饰的方法会相互阻塞,调用非synchronized修饰的方法,相互不会阻塞(没有任何限制)
对不同对象来说,则没有以上任何限制
多线程(synchronized)的问题
1.在静态方法上使用同步时会发生什么事?
同步静态方法时会获取该类的“Class”对象,所以当一个线程进入同步的静态方法中时,线程监视器获取类本身的对象锁,其它线程不能进入这个类的任何静态同步方法。它不像实例方法,因为多个线程可以同时访问不同实例同步实例方法。
2.静态同步方法与非静态同步方法会相互影响吗?
静态方法的锁对象是该类的“Class”对象,非静态方法的锁对象是该类的某个实例对象,所以 ...
synchronized关键字实现信号量同步功能
下面的代码,不加mys.acquire();和mys.release();的时候,各线程会交替输出。
加上的话,各线程会串行输出,说明信号量机制生效了。
MySemaphore.java
interface Semaphore {
void acquire();
void release();
}
public class MySemaphore implements ...
[转载]java.util.concurrent.locks Synchronized
主要相同点:Lock能完成Synchronized所实现的所有功能。
主要不同点:Lock有比Synchronized更精确的县城予以和更好的性能。Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。
synchronized 修饰方法时 表示同一个对象在不同的线程中 表现为同步队列
如果实例化不同的对象 那么synchronized就 ...