多线程
DarkNight_YuJiang
1.喜欢编程,有过2年javaEE开发经验;
2.能快速了解业务,有很好的工作主动性,能够快速的融入团队
3.能够承受一定的压力,具有有良好的沟通意识、合作意识和执行能力
4.喜欢学习接触新的技术
展开
-
ThreadLocal
顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。使用场景To keep state with a thread (user-id, transaction-id, logging-id)To转载 2015-07-16 18:17:24 · 365 阅读 · 0 评论 -
多线程并发库高级应用 之 java5中的线程并发库--线程池、Callable&Future
笔记摘要: 这里首先介绍了java5中的并发的小工具包:automatic,然后介绍了线程池的概念,对使用java5的方式创建不同形式的线程进行了演示, 之后介绍了两个 对象:Callable和Future,用于获取线程执行后的结果,对于线程锁技术则在另外一篇文章中介绍。Java5中的线程并发库都在j转载 2015-08-20 08:35:54 · 881 阅读 · 0 评论 -
多个线程按顺序执行——join()
package com.jjyy.thread;/** * 假如有三个线程T1,T2,T3,如何保证T2在T3之前执行完成,T1在T2之前完成? * @author jiangyu 2015年9月7日 * 注意:线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。 */public class JoinTest { public static原创 2015-09-07 08:30:17 · 3382 阅读 · 2 评论 -
多线程并发库高级应用 之 线程范围内共享数据
笔记摘要: 所谓线程范围内共享数据,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据, API中为我们提供了一个操作线程范围内共享数据的类ThreadLocal,对于线程范围内共享数据的应用,在ThreadLocal的应用场景中进行了介绍,然后转载 2015-08-20 08:38:47 · 655 阅读 · 0 评论 -
银行调度系统
一、需求:模拟实现银行业务调度系统逻辑,具体需求如下: Ø 银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。Ø 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。Ø 异步随机生成各种类型的客户,生成各类型用户的概率比例为转载 2015-08-20 08:42:02 · 663 阅读 · 0 评论 -
多线程并发库高级应用 之 传统定时器、互斥、同步通信技术
笔记摘要: 这里分析了多线程的一些细节问题,并介绍了传统定时器的创建,同时实现了根据自己的调度计划的自定义定时器,对于传统互斥技术中发现的内部类问题, 进行了分析,最后对于同步通信技术,是重点,分析了如何处理类似的问题,如何设计能够更加清晰简单,体现了高内聚和程序的健壮性一、多线程的几个知识点转载 2015-08-20 08:40:19 · 505 阅读 · 0 评论 -
多线程并发库高级应用 之 其它同步工具类
目录(?)[+]笔记摘要: 这里主要介绍了java5中线程锁技术以外的其他同步工具,首先介绍semaphore:一个计数信号量。用于控制同时访问资源的线程个数, CyclicBarrier同步辅助类:从字面意思看是路障,这里用于线程之间的相互等待,到达某点后,继续向下执行,CountDownLatch同步辅转载 2015-08-20 08:34:40 · 634 阅读 · 0 评论 -
多线程并发问题(二)
SynchronousQueue类一种阻塞队列,其中每个插入操作必须等待另一个线程的对应移除操作 ,反之亦然。 同步队列没有任何内部容量,甚至连一个队列的容量都没有。除非另一个线程试图移除某个元素,否则也不能(使用任何方法)插入元素,也不能迭代队列,因为其中没有元素可以用于迭代。 从生产者的角度来看,只有一个元素(或消息)可以放到队列里面。生产者需要等到消原创 2015-08-19 20:01:31 · 362 阅读 · 0 评论 -
多线程并发知识点(一)
Semaphore类JDK API中描述为:一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。Semaphore 通常用于限制可以访问某些资源(原创 2015-08-19 13:53:26 · 444 阅读 · 0 评论 -
多线程并发问题(一)
题目:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。解决方式一:使用Executor多线程框架package com.jjyy.thread;import java.util.concurrent.ExecutorServic原创 2015-08-19 10:06:57 · 459 阅读 · 0 评论 -
多线程(高级篇)
线程局部变量(ThreadLocal)JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量。线程局部变量高效地为每个使用它的线程提供单独的线程局部变量值的副本。每个线程只能看转载 2015-08-18 21:37:19 · 453 阅读 · 0 评论 -
多线程(初级篇)
相关概念进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。一个进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。多线程程序中,多个线程被并发转载 2015-08-18 21:35:15 · 492 阅读 · 0 评论 -
多线程知识(1)
1、关于volatile 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存;当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效。线原创 2015-08-17 19:48:37 · 415 阅读 · 0 评论 -
线程间的通信——wait()/notify()
package com.jjyy.thread;/** * 线程间的通讯 * * 假设有两个线程,A和B。共同拥有一个同步对象,lock。 1.首先,线程A通过synchronized(lock) 获得lock同步对象,然后调用lock.wait()函数,放弃lock同步对象,线程A停止运行,进入等待队列。 2.线程B通过synchronized(lock) 获得线程A放弃原创 2015-09-07 08:07:20 · 555 阅读 · 0 评论