Java 线程
dabing69221
这个作者很懒,什么都没留下…
展开
-
【Java并发编程实践】— ThreadLocal分析
前言首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。(注意这里说的只是“一般情况”,如果通过ThreadLocal.set() 到线程中的对象是多线程共享的同一个对象,各个线程中访问的将是同一个共享对象)。转载 2013-12-25 14:00:18 · 3080 阅读 · 2 评论 -
【Java并发编程实践】— 线程安全
无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,此时必须使用同步机制来协调线程对该变量的访问。Java提供了synchronized关键字,对具体一个对象实现线程独占,完成所谓的原子操作。无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,此时必须使用同步机制来协调线程对该变量的访原创 2013-12-24 11:04:38 · 1349 阅读 · 0 评论 -
Java synchronized详解
一.前言在多线程编程中总会遇到线程同步问题,所以Java中synchronized关键字很好的解决了线程同步问题,所以说学习该知识点很重要啊!二.synchronized关键字1.synchronized概念:Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。synchronized 关键字,它包括两种用法:转载 2013-12-22 20:56:02 · 1253 阅读 · 0 评论 -
Java Thread.join详解
一、使用方式 Thread t = new AThread(); t.start(); t.join();二、为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程转载 2013-12-21 22:58:28 · 7201 阅读 · 2 评论 -
Java多线程调度—优先级
一. 线程的调度-优先级与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行(优先级低的也可能会被执行)。线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。设置线程的优先级:线程默认的优先级是创建它的执行线程的优先级。可以通过setPriority(int newPrior转载 2013-12-19 23:25:19 · 2331 阅读 · 0 评论 -
Java Thread.yield详解
Java线程中有一个Thread.yield( )方法,很多人翻译成线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行。打个比方:现在有很多人在排队上厕所,好不容易轮到这个人上厕所了,突然这个人说:“我要和大家来个竞赛,看谁先抢到厕所!”,然后所有的人在同一起跑线冲向厕所,有可能是别人抢到了,也有可能他自己有抢到了。我们还知道线程有个优先级的问题,那么手里有优先权的这些人就一定能抢到厕所的位置吗? 不一定的,他们只是概率上大些,也有可能没特原创 2013-12-19 22:51:51 · 124996 阅读 · 40 评论 -
Lock与Synchronized区别
Synchronized和java.util.concurrent.locks.Lock的区别 主要相同点:Lock能完成Synchronized所实现的所有功能。主要不同点:Lock有比Synchronized更精确的县城予以和更好的性能。Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。synchronized原创 2013-09-17 00:09:29 · 961 阅读 · 0 评论 -
Java 线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。下面这张图完整描述了线程池的类体系结构。线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有请求到达时,从池中取一个线程,执行完请求任务转载 2013-12-11 23:00:50 · 1227 阅读 · 0 评论 -
java Future用法和意义
在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果。 所以run的返回值是void类型。 如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8...使用多线程来计算。 但后者需要前者的结果,就需要用callable接口了。 callable用法和runnable一样,只不过调用的是call方法,该方法有一个泛型返回值类型,你可以转载 2013-12-26 23:22:42 · 17861 阅读 · 0 评论