
Java线程
文章平均质量分 77
编程新说
这个作者很懒,什么都没留下…
展开
-
[Java] ThreadLocal相关内容
当谈到线程时,必然要关注多个线程对同一个资源的访问。比如某个线程要读一个变量,为了保证它在读的时候不被其它线程执行写操作,所以要加一个只读锁,这样其它线程就无法再加只写锁或读写锁,但是如果其它线程这时也要读它,可以再加只读锁。多个线程可以同时读这个变量,但是每次只有一个线程可以来写这个变量。这就是线程通过加锁的机制来访问变量。这种情况也就是同一个变量被多个线程共享,所以必须通过加锁进行同步。原创 2012-10-18 20:31:26 · 406 阅读 · 0 评论 -
[Java] 锁机制之synchronized
在处理多线程同步问题的时候,方法之一就是使用锁机制来同步多个线程在同一时刻对同一资源访问。在这里需要强调的是这两个“同一”的概念,第一是在同一时刻,如果每个线程都在不同的时刻进行访问,并且访问的时长也不重叠,就不需要进行同步;第二是同一资源,如果每个线程都访问不同的资源,那就更不需要同步了。同一时刻和我们日常生活中的时刻可能不太一样,不过可以这样去帮助理解。同一资源的界定要根据实际情况来定,在处理原创 2012-11-08 16:43:58 · 662 阅读 · 0 评论 -
[Java] 线程之wait和notify
wait方法和notify方法来源于Object类,对wait方法的调用必须先获得监视器,然后在监视器上调用wait方法,意思是使当前线程在监视器上等待(即进入阻塞状态),直到被其它线程在同一个监视器上通知为止,然后解除阻塞状态,重新被安排调度执行,否则将一直阻塞。wait方法还有重载方法,即带有超时参数,表示该线程最大的等待时间,过了这个时间后,即便是没有其他线的通知,该线程也会自动解除阻塞状态原创 2012-11-04 15:15:12 · 335 阅读 · 0 评论 -
[Java] 线程之join
线程里面有一个join方法,意思是等待该线程的消亡,即等待该线程被执行完。它还有带参数的重载方法,参数是等待的最长时间。一个线程自己对自己调用这个方法显然没什么意思,就表示自己再等一定的时间消亡,这没什么实际意义。一般是对另外一个线程调用这个方法,表示等待一段时间或直到另外一个线程执行完毕这个线程才继续往下执行。这说明了什么,很显然是在调整线程间的执行顺序,这也是join方法的一个重要的使用场景。原创 2012-10-31 09:56:21 · 347 阅读 · 0 评论 -
[Java] 线程中断(一)
正常情况下,一个线程完成它所有的任务后,就会自动退出。线程所持有的资源以及线程本身都会被释放掉。但是,在有些情况下,比如某些条件发生了改变或我们已经获得了想要的结果,这时虽然线程还没有执行完毕,但是我们已经不需要它在继续执行了,这时候就可以中断正在执行的线程。 想象一下,要使一个正在运行的线程中断、不再继续运行,我们该怎么做呢?一种方法是我们可以直接把这个线程杀掉,就像在任务管原创 2012-10-23 17:39:34 · 347 阅读 · 0 评论 -
[Java] 线程之sleep
Java的线程有一个sleep方法,它的目的是让当前正在执行的线程临时的放弃执行,进行休眠一定的时间,过了这个时间后又重新恢复执行。线程在休眠期间它所持有的监视器锁是不会被释放的。这个方法可以普通的调用,也可以在获得锁的情况下调用,只是在休眠期间一直占有锁。下面是普通调用的实例代码:Thread t3 = new Thread(new Runnable(){ public原创 2012-10-30 13:54:34 · 373 阅读 · 0 评论 -
[Java] 线程中断(三)
前两篇文章分别说明了线程应该由它自己来处理中断和运行中的线程如何自己处理中断,本文主要描述阻塞中的线程如何自己处理中断。线程阻塞其实就是在执行过程中,为了某些条件或基于别的什么原因,自愿的或被迫的暂定一定的时间,然后条件满足后再继续执行。查阅一下线程类,发现使线程阻塞的方法就这么几个:最常用的是sleep,让线程休眠一定的时间,时间过后再继续执行;其次是wait,让线程在一定时间内等待,直到被通知原创 2012-10-27 14:34:50 · 522 阅读 · 0 评论 -
[Java] 线程中断(二)
上一篇文章说明了中断线程最好的做法是让被中断的线程自己处理具体的中断过程和细节。线程的拥有者只需调用被中断线程的interrupt()方法,设置它的状态为中断,然后就不在管它。那么线程是如何中断自己的呢?这篇文章来进行大概的讨论。 其实,如果线程的目的和作用不同,那么线程的执行过程可能完全不一样。我们在使用多线程的时候,首先需要考虑这个线程在运行的过程中需不需要被中断或者会不原创 2012-10-24 14:09:21 · 305 阅读 · 0 评论 -
[Java] 用户线程和守护线程
java线程可以分为两种:用户线程额守护线程。用户线程有时称为前台线程。我们在写程序时,把一些耗时的处理从主线程里面拿出来,放到单独的一个线程里面去执行,以免阻止主线程的运行,造成界面处于一种无响应状态,无法进行其他操作,这样的用户体验非常不好。一般我们在程序里面创建的线程都是用户线程,它们为程序所用,这些线程都必须正常的运行到结束,或者按照要求终止。 守护线程有时称为后台线程。原创 2012-10-21 19:04:23 · 882 阅读 · 0 评论 -
[Java] 线程之并发与同步
使用多线程的目的通常是为了提高并发性,这就不可避免的出现了线程同步的问题。在研究如何解决线程同步问题之前,必须先弄清楚什么是线程同步,为什么需要线程同步。很好的明白事物的原因,才能更好的解决问题。我们先来讲清楚这些概念和问题。并发并发是指两个或多个事物在同一时间间隔内发生。简单的理解就是在同一段时间内发生了多个事情。这里需要着重指出的是一个时间段,而不是一个时刻。比如一个处理器同一时刻只能原创 2012-11-25 11:25:24 · 4834 阅读 · 1 评论