java 线程安全 锁-阿里云开发者社区

开发者社区> lhyxcxy> 正文

java 线程安全 锁

简介: 两个线程A,B。调用同一加锁代码块C,假如A先调用C,在A线程调用C完成之前,B线程要调用此代码块必须先等待,等A调用完成,B立马执行C. package test; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.net.URLEncoder; impor
+关注继续查看

两个线程A,B。调用同一加锁代码块C,假如A先调用C,在A线程调用C完成之前,B线程要调用此代码块必须先等待,等A调用完成,B立马执行C.


package test;

import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import net.sf.json.JSONObject;

import com.hlzt.wx.util.http.WxHttpClientUtils;
import com.hlzt.wx.util.msg_handler.MsgDispatcher;

public class ss {
	
	 public static void main(String[] args) throws UnsupportedEncodingException {
		 ddd d=new ddd("aaaaaaaaaaaaaa");
		 d.start();
		 ddd d2=new ddd("bbbbbbbbbbbbbb");
		 d2.start();
		 
			
	}
	 
	 public synchronized static void aa(String str)
		{
			System.out.println("1#########"+str);
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			System.out.println("2#########"+str);
			
		}
	
}


class ddd  extends Thread{
	private String aaa;
	
	
	
	public ddd(String aaa) {
		this.aaa = aaa;
	}

	@Override
	public void run() {
		ss.aa(aaa);
	}
	

}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板
写锁降级为读锁,但读锁不可升级或降级为写锁。 锁降级是为了让当前线程感知到数据的变化。 1 //读写锁 2 private ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); 3 //读锁 4 private ReadLock readLock=lock.
689 0
线程安全性(第二章)
线程安全性 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。 对象的状态:存储在状态变量(例如实例或静态域)中的数据,包括其他以来对象的域 共享(Shared):意味着变量可以由多个线程同时访问 可变(Mutable):变量的值在其生命周期内可以发生变化 一个对象是否需要使线程安全的,取决于它是否被多个线程访问。
893 0
什么是线程安全
什么是线程安全?         如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
675 0
Java线程的生命周期(转)
Java线程的生命周期   一个线程的产生是从我们调用了start方法开始进入Runnable状态,即可以被调度运行状态,并没有真正开始运行,调度器可以将CPU分配给它,使线程进入Running状态,真正运行其中的程序代码。
829 0
java安全编码指南之:线程安全规则
如果我们在多线程中引入了共享变量,那么我们就需要考虑一下多线程下线程安全的问题了。那么我们在编写代码的过程中,需要注意哪些线程安全的问题呢?
2390 0
java多线程:并发包中ReentrantLock锁的公平锁原理
一:锁的原理结构 (1)锁对象内部维护了一个同步管理器的对象AbstractQueuedSynchronizer,AbstractOwnableSynchronizer (2)该对象其实是一个抽象类,具体的锁的管理器继承该抽象类 (3)该抽象类的关键属性有:---->Thread exclus...
509 0
java多线程 -- ReadWriteLock 读写锁
写一条线程,读多条线程能够提升效率。 写写/读写 需要“互斥”;读读 不需要互斥. ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。
752 0
在JAVA中使用DCL双检查锁机制实现单例的多线程安全
元旦放假期间学代码,我都感动我自己啦。
1475 0
线程安全性
线程安全性 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。 "共享"意味着变量可以由多个线程同时访问,而可变则意味着变量的值在其生命周期内可以发生变化。
778 0
+关注
lhyxcxy
专注于前后端服务器交互,人工智能,NLP领域
413
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载