昨天复习了一下Java多线程,最近找工作时总是有人问到java concurrent包,所以就学习了一下,学习逻辑基本是"映射式",就是看原Java提供的多线程\同步在java concurrent中是怎么实现的,经比较感觉无区别,有原来java多线程基础理解concurrent的操作无压力,现在用concurrent同步类重写http://blog.csdn.net/zyplus/article/details/6672775的问题
代码如下:
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*@author zzf
*/
public class Test_15 {
public static void main(String[] args) throws InterruptedException{
Lock alock=new ReentrantLock();
Lock block=new ReentrantLock();
Lock clock=new ReentrantLock();
Condition acon=alock.newCondition();
Condition bcon=block.newCondition();
Condition ccon=clock.newCondition();
PrintChar p1 = new PrintChar("A",alock,clock,acon,ccon);
PrintChar p2 = new PrintChar("B",block,alock,bcon,acon);
PrintChar p3 = new PrintChar("C",clock,block,ccon,bcon);
Thread t1 = new Thread(p1);
Thread t2 = new Thread(p2);
Thread t3 = new Thread(p3);
t1.start();
Thread.sleep(50);
t2.start();
Thread.sleep(50);
t3.start();
Thread.sleep(50);
}
}
class PrintChar implements Runnable{
private String name;
private Lock self;
private Lock prev;
private Condition conSelf;
private Condition conPrev;
public PrintChar(String name,Lock self,Lock prev,Condition conSelf,Condition conPrev){
this.name=name;
this.self=self;
this.prev=prev;
this.conSelf=conSelf;
this.conPrev=conPrev;
}
@Override
public void run() {
int count=10;
while(count>0){
prev.lock();
self.lock();
try{
System.out.println("name:"+name);
count--;
conSelf.signal();
}catch(Exception e){
e.printStackTrace();
}finally{
self.unlock();
}
try{
if(count>0)
conPrev.await();
}catch(Exception e){
e.printStackTrace();
}finally{
prev.unlock();
}
}
}
}
分享到:
相关推荐
很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到针对java.lang包中线程类的学习,但线程类的学习并不像JDBC一样简单,学习曲线陡峭,多弯路与...
花了一段时间辛苦整理的ppt,与大家分享,请提出您的宝贵意见。
如何启动:以win7系统为例,最好jdk8 1.打开cmd,cd到jdk的path,本机是:cd C:\Java\jdk6\bin ...java -cp D:\javaConcurrentAnimated.jar vgrazi.concurrent.samples.launcher.ConcurrentExampleLauncher
java concurrent源码 java_concurrent java concurrent包源代码学习,及相关实践示例
Concurrent_Java8 多线程和Java8学习源码 测试
给大家介绍java的concurrent用法,感兴趣的朋友一起学习吧
运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接
javaSE相关示例代码, 如JDK新特性,集合分析,NIO,concurrent等。 Java学习资料
这个工程是为了学习guava concurrent中的AbstractFuture而建立的,里面有可以运行的例子,再配合我的博客:https://blog.csdn.net/o1101574955/article/details/82889851,可以看明白guava concurrent的基本设计思路...
Java并发Java并发编程学习源码编译版本:1.8以上马士兵老师java多线程高并发编程视频源码B站地址: : mashibing/src包: mashibing/src视频p18:c_001〜c_005视频p19:c_006〜c_009视频p20:c_010〜c_012视频p21:c_...
NULL 博文链接:https://janeky.iteye.com/blog/769965
1. 多线程和并发编程:学习使用Java并发包(如java.util.concurrent)处理多线程编程,了解线程池、锁机制和并发集合等。 2. 性能优化:学习分析和调优Java应用程序的性能,了解内存管理、垃圾回收、性能监测和调优...
java8 源码 学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,关注微信公众号,及时得到文章推送,谢谢支持。 说明:如无特别说明,所有代码都...JavaConcurrent(Java并发系列) 【Java并发系列】
[2]中介绍了java.util.concurrent.Executors类的API。 [3]中介绍了Java中线程池的类体系结构。 [4]中有ThreadPoolExecutor的实例应用。 [5]中有线程池的实例讲解,实现了一个基于线程池的端口监听服务器。★ [6]...
《实战java高并发程序设计》源码整理联系作者十三的java的学习交流QQ群: 881582471 , 658365129(已满)相关文章书籍封面目录第1章走入并行世界1.1何去何从的并行计算1.1.1忘掉那该死的并行1.1.2可怕的现实:摩尔...
Java_JUC_Study:java.util.concurrent代码示例学习
无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的...java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362
java源码总结 java并发编程学习源码部分 这个项目是基于java并发编程艺术这本书来学习的,主要目的还是学习,这是结合书中内容自己写的代码
主要介绍了Java util concurrent及基本线程原理简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下