本月博客排行
年度博客排行
-
第1名
宏天软件 -
第2名
龙儿筝 -
第3名
青否云后端云 - wallimn
- gashero
- vipbooks
- 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
- forestqqqq
- luxurioust
- lzyfn123
- johnsmith9th
- ajinn
- nychen2000
- wjianwei666
- daizj
- hanbaohong
- 喧嚣求静
- ranbuijj
- silverend
- kingwell.leng
- lchb139128
- kristy_yy
- lich0079
- jveqi
- java-007
- sunj
- yeluowuhen
最新文章列表
<基础-2> 构建线程安全应用程序
上一篇主要介绍了程序,进程,线程的概念和区别,进程的组成。然后是线程的创建和基本控制。接着本篇就介绍下什么是线程安全,怎样去保证线程安全的基本方法。
二、 构建线程安全应用程序
2.1 什么是线程安全性
线程安全很难给出一个准确的定义。大都是从不同的方面进行一个描述。当对一个复杂对象进行某种操作时,从操作开始到操作结束,该对象中间肯定会经历若干个非法的中间状态。能保证多线程在使用该对象时,每个开始 ...
(转)Java中的ReentrantLock和synchronized两种锁定机制的对比
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨 ...
java synchronized详解(个人认为很不错的讲解)
分别锁定this , obj1 , obj2 三个对象
public class Resource2 {
int limit = 1000;
private Food obj1 = new Food();
private Food obj2 = new Food();
public synchronized void f() {//锁定this
for (int i ...
Java多线程 - (二) 线程同步synchronized和volatile
一、可能带来死锁的Synchrionized
先用代码来展示下线程同步的问题:
/**
*
*/
package com.wsheng.thread.synchronize;
/**
* @author Wang Sheng(Josh)
*
*/
public class ThreadSynchronized {
public static ...
synchronized(this)与synchronized(class)
synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待.class与this做为不同的监视器可以同时使用,不存在一个线程获取了class,另一个线程就不能获取该class的一切实例.
根据下面的代码自行修改,分别验证下面的几种情况:
synchronized(class)
synchronized(this)
->线程各自 ...
实验java中 synchronized 的使用
实验java中synchronized的使用
1 首先我们创建一个测试类TestSync
在TestSync中创建一个内部类Worker实现Runnable接口
class Worker implements Runnable{
int index = 1;
@Override
public void run() {
int runIndex = index;
...
Java 多线程总结
昨天熬了个通宵,看了一晚上的视频,把java 的多线程相关技术重新复习了一遍,下面对学习过程中遇到的知识点进行下总结。
首先我们先来了解一下进程、线程、并发执行的概念:
进程是指:一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。
线程是指:进程中的 ...
Java中使用synchronized控制线程同步
Java线程之间控制占用临界资源(共享资源)用的最多就是synchronized,首先获得资源访问权的线程给资源对象加锁,使用完毕以后再释放对象锁。例如打印机的例子:
public class Printer {
public void printLetters(char c) {
for(int i = 0; i<5; i++) {
System. ...
ReentrantLock和synchronized的性能对比
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo8
ReentrantLock和内部锁的性能对比
ReentrantLock是jdk5引入的新的锁机制,它与内部锁(synchronize) 相同的并发性和内存语义,比如可重入加锁语义。在中等或者更高负荷下,ReentrantLock有更好的性能,并且拥有可轮询和可 ...
synchronized同步块实例
synchronized同步块实例
在java中,每个对象都包含了一把锁(也叫做“监视器”),它自动成为对象的一部分(不必为此写任何特殊的代码)。在给定时刻,只有一个线程可以拥有一个对象的监视器。
示例:线程1进入withdrawal方法时,获得监视器(加锁);当线程1的方法执行完毕返回时,释放监视器(开锁),线程2的withdrawal方能进入
java之11天 多线程 (二)
卖票安全问题
//线程出现安全问题啦 !!! 卖出了 0 -1 -2 号票了
class SaleTicket1 implements Runnable{
private int ticks=100;
private long time=1000; //加上这个后 就让安全问题 跟明显了
public void run(){ //复写接口中的方法 ,不能抛异常 ,只 ...
多线程-并发与锁
我们讲到多线程,就离不开并发,讲到并发,就离不开安全性,这里我们先来实现一个简单功能能:买票系统
这是票的类,以及买票的方法:
public class DBTicket {
// 假设存放100张票
private static int num = 100;
public static void setNum(int num) {
DBTicket.num = nu ...
Java并发编程(六)--Lock与Synchronized的比较
从代码层角度来说:
Lock是基于在语言层面实现的锁,Lock锁可以被中断,支持定时锁,虽然我们总是在一个finally块中释放锁,但是其实我们可以很随意的释放锁,如果安全的话。Synchronized是基于JVM实现的,我们称之为对象的内置锁,Java中的每一个对象都可以作为锁。对于同步方法,锁是当前实例对象。对于静态同步方法,锁是当前对象的Class对象。对于同步方法块,锁是Synchoni ...
java的wait与notify
wait与notify是java同步机制中重要的组成部分。结合与synchronized关键字使用,可以建立很多优秀的同步模型。
synchronized(this){}等价与public synchronized void method(){.....}
同步分为类级别和对象级别,分别对应着类锁和对象锁。类锁是每个类只有一个,如果static的方法被sy ...
Java中synchronized 用在实例方法和对象方法上面的区别
在Java中,synchronized 是用来表示同步的,我们可以synchronized 来修饰一个方法。也可以synchronized 来修饰方法里面的一个语句块。
修饰实例方法:
public synchronized void normalMethod() throws InterruptedException {
for (int i = 0; i ...