欢迎来到天天文库
浏览记录
ID:23659008
大小:22.74 KB
页数:14页
时间:2018-11-09
《java,高并发解决方案》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立java,高并发解决方案 篇一:Java高并发程序设计 Java高并发程序设计 第一课前沿 ?在计算密集型的领域中非常适用并行程序 ?多核CPU的产生促使了并行程序的设计,摩尔定律的失效,芯片的性能不能提高,4GHz已经是当下最高的频率,从而产生多核CPU的出现。 ?活锁:两个资源A、B,进程1和2分别占用A和B时发现不能工作,就同时释放掉,然后又同时分别占用B和A如此反复!出现活锁 ?阻塞: 第二课Java并行程序
2、基础 ?线程是比进程更细粒度的执行单元,可以说是属于进程的一个子集 ? 7, Thread类的run()方法实现于Runnable接口,如果直接调用run()方法,不会启动新的线程,而是在当前线程下运行,start()方法会开启一个新的线程。 两种方式,1重载run方法2,实现Ruanable接口 8,()是一种比较的让线程终止的方法优雅的方法,随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动
3、力。国际分工的深化、大量国际统一标准规则的建立不会立刻停止掉该程序,根据程序的设计,而是根据该程序的设计,当执行完该程序的一次循环之后,在下次循环程序开始之前中断,保证该程序的数据完整性。 9,try{ (XX);}catch(InterruptedExceptione){////设置中断状态,抛出异常后会清除中断标记位();} 10,查看当前被挂起的进程命令jps 查看进程中具体线程的信息jstack5880 11, ?等待线程结束join(),其本质是判断线程是否还存活,如果一直存活那么通 知调用该线程的其他线程等待,如果结束有JVM调用notif
4、yAll()唤醒所 有等待该线程的线程。 f(millis==0){ while(isAlive()){ wait(0); } } ? 12,守护线程在后台默默的完成一些系统性的服务,比如垃圾回收与JIT线程等。但非守护线程结束时,随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立JVM不会因为守护线程而继续执行,随之而推出。 13,线程优先级
5、的运行时候只是在概率上发生的可能下要大! 14,synchronized加锁的三种方式。 ?对象实例加锁 ?实例方法加锁 ?类级别实例方法加锁 谦让yield() 第三课Java内存模型和线程安全 ?同一个操作在两条不同的指令之间是不能够一起做的,因为他们会使用同一个硬 件设备. ?可见性问题是各个层面优化产生的 ? ?Java并 原子性发编程的的三个重要的概念。 可见性有序性,并发程序会发生指令重排,导致语句执行顺序发生变化的情况,虽然处理器会对指令进行重排序,但是它会保证程序最终结果会和代码顺序执行结果相同;指令重排序不会影响单个线程的
6、执行,但是会影响到线程并发执行的正确性。 ?随着信息化和全球化的发展,国家及地区之间的贸易也已成为拉动一国经济的三驾马车之一,甚至是三驾马车之首,奥巴马政府成立之日起自从人类进入商品经济社会以来,贸易即已成为人们日常活动的主要部分,并成为一国经济增长的主动力。国际分工的深化、大量国际统一标准规则的建立要想并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没 有被保证,就有可能会导致程序运行不正确。 第四课无锁 ?无锁的性能要远好于阻塞的执行方式 ?前导零是指转换成二进制的时候前面为零的个数(LeadingZeros) ?无锁实现Stack
7、堆栈,见作业 第五课JDK并发包1 1.Reentrantlock是属于Synchronized的增强版,多增加了一些特有的功能 2.ConcurrentHashMap属于高并发的解决方案 3.HashMap发生大量冲突的时候,会退化成一个链表,引起性能降低 4.BlockingQueue阻塞队列,会引起线程的阻塞,不是一个高性能的并发实现,内部实现 机制采用了加锁,同时只有一个线程进入 第六课JDK并发包2 1,线程池实现了对线程的复用,避免了线程的多次创建和销毁,节省了CPU处理时间。 2,Java内置线程池,Callable与Runnab
此文档下载收益归作者所有