java并发编程学习
java多线程学习
weiers
逝去了青春至少还留下了代码
展开
-
JAVA并发编程9_正确关闭线程
Java没有提供任何的安全机制来终止线程,程,虽然Thread.stop和suspend等方法提供了这样的机制,但是存在严重的缺陷,应该避免使用这些方法。 它提供了中断(interrupt),这是一种协作机制,能够使一个线程终止另一个线程当前的工作。 一种协作机制是设置一个“已请求取消(Cancellation Requested)”标志,而任务定期查看该标志。“已请求取消”标志private原创 2015-09-02 00:04:54 · 4381 阅读 · 1 评论 -
JAVA并发编程8_线程池的使用
不使用线程池1.串行执行任务class SingleThreadWebServer { public static void main(String[] args) { ServerSocket socket = new ServerSocket(80); while (true) { Socket conn = socket.accept(); handleRequ原创 2015-08-27 16:06:25 · 5213 阅读 · 0 评论 -
JAVA并发编程7_线程封闭:ThreadLocal类
多线程访问共享数据时,通常需要同步,一种避免使用同步的方式就是不共享数据。如果仅在单线程里访问数据,那么就不需要使用同步,这种技术被称为线程封闭。Ad-hoc线程封闭:维护线程封闭性的职责完全由程序实现来承担。栈封闭:我的理解就是局部变量,局部变量是线程私有的,不会被共享,也就不存在竞争问题。因此能使用局部变量的地方就不要使用全局变量。ThreadLocal类:一种维护线程封闭性更规范原创 2015-08-26 12:00:48 · 3065 阅读 · 0 评论 -
JAVA并发编程6_线程协作/生产者-消费者
前面通过同步锁来同步任务的行为,两个任务在交替访问共享资源的时候,可以通过使用同步锁使得任何时候只有一个任务可以访问该资源,见博客:线程同步之synchronized关键字。下面主要讲的是如何使任务彼此间可以协作,使得多个任务可以一起工作去解决木某个问题,因为有些问题中,某些部分必须在其他部分被解决之前解决,就像在餐厅服务员要端菜就必须有厨师做好了菜。在任务协作时,可以让任务自身挂起,直至某些外部原创 2015-08-25 23:06:04 · 2560 阅读 · 0 评论 -
JAVA并发编程5_线程状态
JAVA线程的可能处于一下几种状态,任意的时间点一个线程只能处于一个状态。1. 新建状态(New):创建后尚未启动的线程处于这种状态。转移时机:创建一个新线程。2. 就绪状态(Runnable):调用了start()方法,该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。转移时机:调用start()方法。处于Running状态的线程被CPU选择执行其他线程。原创 2015-08-25 11:39:50 · 2396 阅读 · 0 评论 -
JAVA并发编程4_线程同步之volatile关键字
上一篇博客JAVA并发编程3_线程同步之synchronized关键字中讲解了JAVA中保证线程同步的关键字synchronized,其实JAVA里面还有个较弱的同步机制volatile。volatile关键字是JAVA中的轻量级的同步机制,用来将变量的更新操作同步到其他线程。从内存可见性的角度来说,写入volatile变量相当于退出同步代码块,读取volatile变量相当于进入同步代码块。旧原创 2015-05-26 18:08:33 · 1880 阅读 · 0 评论 -
JAVA并发编程3_线程同步之synchronized关键字
在上一篇博客里讲解了JAVA的线程的内存模型,见:JAVA并发编程2_线程安全&内存模型,接着上一篇提到的问题解决多线程共享资源的情况下的线程安全问题。不安全线程分析public class Test implements Runnable { private int i = 0; private int getNext() { return i++; } @Overri原创 2015-05-20 08:50:54 · 4834 阅读 · 0 评论 -
JAVA并发编程2_线程安全&内存模型
”你永远都不知道一个线程何时在运行!“在上一篇博客JAVA并发编程1_多线程的实现方式中后面看到多线程中程序运行结果往往不确定,和我们预期结果不一致。这就是线程的不安全。线程的安全性是非常复杂的,没有任何同步的情况下,多线程的执行顺序是不可预测的。当多个线程访问同一个资源时就会出现线程安全问题。例如有一个银行账户,一个线程往里面打钱,一个线程取钱,要是得到不确定的结果那是多么可怕的事情。引原创 2015-05-15 23:16:42 · 3313 阅读 · 0 评论 -
JAVA并发编程1_多线程的实现方式
JAVA中创建线程的两种方式:继承Thread或实现Runnable接口。1 继承Thread类,重写run方法:/** * 实现线程的第一种方式 :继承Thread * 实现数据共享需要设置属性为静态 * @author qhyuan1992 * */class MyThread extends Thread{ private int count;// static pu原创 2015-05-14 18:09:57 · 3391 阅读 · 1 评论