线程与进程
RT_wqt
这个作者很懒,什么都没留下…
展开
-
java 线程之间的协作(显示的Lock和Conditon对象)学习笔记
在java SE5的java.util.concurrent类库中还有额外的显示工具可以用来重写 MaxOMatic.java 使用互斥并允许任务挂起的基本类是Condition,你可以通过在Condition上调用await()来挂起一个任务。当外部任务发生变化,意味着某个任务应该继续执行时,你可以通过调用signal()来通知这个任务,从而唤醒一个任务,或者调用signalAll()来唤醒所有...原创 2020-02-21 17:56:18 · 136 阅读 · 0 评论 -
java 错失的信号学习笔记
T1: synchronized(shareMonitor){ <setup condition for T2> shareModitor.notify(); } T2: while(someCondition){ //Point1 synchronized(shareMonitor){ shareMonitor.wait(); ...原创 2020-02-17 20:44:36 · 258 阅读 · 0 评论 -
java 线程之间的协作(wait(),notify(),notifyAll())学习笔记
调用sleep()和yield()时,对象的锁是没有被释放的,但调用wait()方法时,线程将被挂起,对象的锁会被释放,这就意味着另一个任务将获得对象的锁。因此,在这个时候,对象中其它被标记为synchronized的方法将可以再wait()期间被调用。 1:wait()期间,对象的锁是释放的。 2:可以通过notify(),notifyAll()或令时间到期(wait()里可以设置参数,若不设置...原创 2020-02-16 21:31:28 · 141 阅读 · 0 评论 -
java 在阻塞时终结学习笔记
一个线程可以处于以下四种状态: 1:新建(new):当线程被创建时,它只会短暂地处于这种状态。此时它已经分配了必需的系统资源,并执行了初始化。此时刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行状态或阻塞状态。 2:就绪(Runnable):这种状态下,只要调度器把时间片分配给线程,线程就可以运行。也就是说,在任意时刻,线程可以运行也可以不运行。只要调度器能分配时间片给线程,它...原创 2020-02-14 20:54:34 · 124 阅读 · 0 评论 -
java 线程本地存储(ThreadLocal)
ThreadLocal转载 2020-02-13 15:18:10 · 128 阅读 · 0 评论 -
java Collections.synchronizedList学习笔记
Collections.synchronizedList转载 2020-02-13 14:00:40 · 222 阅读 · 0 评论 -
java 原子类学习笔记
java SE5引入了诸如AtomicInteger、AtomicLong、AtomicReference等特殊的原子性变量类。这些类是在机器级别上的原子性。在常规编程中它们很少派上用场,但在性能调优中,就大有用武之地。 public class AtomicIntegerTest implements Runnable{ private AtomicInteger i=new Atomi...原创 2020-02-13 13:07:20 · 172 阅读 · 0 评论 -
Java 线程原子性,可见性,有序性
原子性,可见性,有序性转载 2020-02-13 11:11:05 · 97 阅读 · 0 评论 -
java synchronized和Lock的区别
synchronized和Lock的区别转载 2020-02-11 16:57:01 · 602 阅读 · 0 评论 -
java Lock学习笔记
java SE5的java.util.concurrent类库还包含有定义在java.util.concurrent.locks中的显式的互斥机制。Lock对象必须被显示的创建、锁定和释放。 以下用显式的Lock重写了EvenGenerator: public class MutexEvenGenerator extends IntGenerator{ private int currentEv...原创 2020-02-11 16:52:52 · 106 阅读 · 0 评论 -
java synchronized关键字学习笔记
synchronized(同步锁)关键字是用来解决共享资源的竞争问题。基本上所有的并发模式在解决线程冲突问题时,都是采用序列化访问共享资源的方案。这意味着在任意时刻,只允许一个任务访问共享资源。通常这是通过在代码前加上一条锁语句来实现的,这就使得在给定时刻,只允许一个任务可以运行这段代码。因为锁语句产生了一种互相排斥的效果,这种机制常常被称作互斥量。 要控制对共享资源的访问,得先把它装进一个对象。...原创 2020-02-11 15:41:13 · 132 阅读 · 0 评论 -
捕获异常(线程)学习笔记
由于线程的本质,使得你不能捕获从线程中逃逸出来的异常。一旦异常逃出任务的run()方法,它就会向外传播到控制台,除非采取特殊的步骤捕获这种错误的异常。在java SE5之前,可以用线程组捕获异常,但是有了java SE5,就可以用Executor来解决这个问题。 class ExceptionThread implements Runnable{ public void run() { th...原创 2020-02-10 01:28:38 · 122 阅读 · 0 评论 -
java 线程join()方法学习笔记
一个线程可以在其它线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续执行。如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复(即t.isAlive()返回假)。 也可以在调用join()方法时带上一个超时参数(单位可以试毫秒,或者毫秒和纳秒),这样如果目标线程在这段时间到期时还没有结束的话,join()方法总能返回。 对join()方...原创 2020-02-08 21:52:36 · 104 阅读 · 0 评论 -
java后台线程学习笔记
所谓后台(daemon)线程,是指程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程结束时,程序也就终止了,同时会杀死进程中的所有非后台线程。比如,执行main()的就是一个非后台线程。 可以通过setDaemon()方法在线程启动之前将线程设置为后台线程。 ...原创 2020-02-07 21:32:13 · 117 阅读 · 0 评论 -
线程的优先级
首先CPU处理现有线程集的顺序是不确定的,但是调度器将倾向于让优先级最高的线程先执行。**即线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 public class SimplePrioritiesDemo implements Runnable{ private int countdown=5; private int pr...原创 2020-02-06 21:17:21 · 386 阅读 · 0 评论 -
java中Thread的sleep() 与yield()区别,yield()与join()区别
sleep() 与yield() 1.sleep()方法给其他线程运行机会的时候,不考虑线程的优先级,因此当高优先级线程sleep()后,低优先级任务有机会运行;但是yield()只会给同优先级或更高优先级线程运行的机会,甚至可能是自己继续运行 2.线程调用sleep()后,转入阻塞状态,而调用yield()后转入了就绪状态。 3.sleep方法声明抛出InterruptedException,而...转载 2020-02-05 19:38:41 · 151 阅读 · 0 评论 -
java进程与线程
进程与线程的区别转载 2020-02-03 20:43:44 · 97 阅读 · 0 评论