各位老铁们好,相信很多人对深入探讨多对象与多锁的协同机制都不是特别的了解,因此呢,今天就来为大家分享下关于深入探讨多对象与多锁的协同机制以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
* @日期2017/4/4。
*/
公共类HasSelfPrivateNum {
私有int num=0;
同步公共无效addI(字符串用户名){
尝试{
if (用户名.equals("a")) {
数量=100;
System.out.println("一组结束!");
线程.sleep(200);
}别的{
数量=200;
System.out.println("b设置完毕!");
}
System.out.println(用户名+"num="+num);
}catch(异常){
例如:printStackTrace();
}
}
}
/**
* @作者无忧山
* @日期2017/4/4。
*/
公共类ThreadA 扩展Thread{
私人HasSelfPrivateNum numRef;
公共线程A(HasSelfPrivateNum numRef){
极好的();
this.numRef=numRef;
}
@覆盖
公共无效运行(){
超级运行();
numRef.addI("a");
}
}
/**
* @作者无忧山
* @日期2017/4/4。
*/
公共类ThreadB 扩展Thread{
私人HasSelfPrivateNum numRef;
公共ThreadB(HasSelfPrivateNum numRef){
极好的();
this.numRef=numRef;
}
@覆盖
公共无效运行(){
超级.run();
numRef.addI("b");
}
}
/**
* @作者无忧山
* @日期2017/3/20。
*/
公共课运行{
公共静态无效主(字符串[] args){
HasSelfPrivateNum numRef1=new HasSelfPrivateNum();
HasSelfPrivateNum numRef2=new HasSelfPrivateNum();
ThreadA threadA=new ThreadA(numRef1);
threadA.start();
ThreadB threadB=new ThreadB(numRef2);
threadB.start();
}
}程序运行结果如下:
一盘结束!
b 设定完毕!
bnum=200
a num=100 上面的例子是两个线程访问同一个类的两个不同实例的同名同步方法,但效果是以异步方式运行。本例中创建了两个业务对象,系统中产生了两个锁,因此运行结果是异步的。打印效果是先打印b,再打印a。
从上面程序的运行结果来看,虽然HasSelfPrivateNum.java中使用了synchronized关键字,但是打印顺序并不是同步的而是交错的。为什么会是这样的结果呢?
Synchronized关键字获取的锁都是对象锁,而不是把一段代码或者一个方法(函数)当做锁。所以在上面的例子中,无论哪个线程先执行带有synchronized关键字的方法,都会持有该方法。如果对象的锁被锁定,那么其他线程只能处于等待状态,前提是多个线程访问同一个对象。
深入探讨多对象与多锁的协同机制和的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
【深入探讨多对象与多锁的协同机制】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章一定讲如何管理很多个互不干扰的对象吧!
有16位网友表示赞同!
多任务并发的时候,多个锁是不是能够提高效率呢?
有19位网友表示赞同!
学习这段内容之后就能更好地理解大规模系统的构建思路了
有12位网友表示赞同!
之前一直在做单线程开发,现在想深入了解多线程同步机制。
有5位网友表示赞同!
使用多个锁,会不会增加代码的复杂度呢?
有17位网友表示赞同!
这篇文章能让我更清楚地知道在哪些情况下需要使用多个锁。
有10位网友表示赞同!
我感觉这部分知识点会经常用得到,一定要好好记牢。
有6位网友表示赞同!
对多线程设计规范非常感兴趣,多锁的使用场景很重要!
有17位网友表示赞同!
这篇文章应该会详细解释锁的获取和释放机制吧!
有16位网友表示赞同!
多个对象多个锁确实容易让人混淆,希望这篇文章能够图文并茂地讲解。
有20位网友表示赞同!
并发编程确实需要掌握这些核心概念才能写出高效稳定的代码。
有15位网友表示赞同!
最近在做项目遇到了线程同步的问题,这篇文章刚好可以解决我的困惑。
有16位网友表示赞同!
学习了多锁的应用之后,相信能够更好地应对并发场景挑战。
有10位网友表示赞同!
多个锁如何协调工作? 这是我非常想知道的知识点!
有15位网友表示赞同!
期待文中能提供一些经典的多线程编程案例,加深对理解。
有13位网友表示赞同!
这篇文章应该会涉及到哪些高级同步工具呢?
有11位网友表示赞同!
多对象多锁的实现原理是什么样的?很有意思!
有18位网友表示赞同!
学习了之后希望能够尝试自己写一个多线程程序!
有7位网友表示赞同!
在实际开发中,如何合理选择合适的锁类型也很重要吧。
有10位网友表示赞同!