并发实战
文章平均质量分 65
lakers_bing
睿智坚强科比精神
展开
-
并发实战值之----线程池--线程池的作用
二,线程池:1,线程池的作用:通过线程的复用,降低资源消耗(线程创建和销毁造成的消耗);操作系统是通过线程控制块(Thread Control Block)来管理一个线程的,即创建一个线程首先要创建一个TCB,一个TCB包括下面四种内容: 1)线程标识符(thread ID):线程的ID号。 2)程序计数器(program counter):记录线程当前执行指令原创 2013-10-08 18:35:20 · 974 阅读 · 0 评论 -
并发实战值之----线程池--线程池中放任务
3,线程池中执行任务:(1)通过execute()方法去执行任务(在外界看来是这样); 我们可以使用execute提交的任务,但是execute方法没有返回值,所以无法判断任务知否被线程池执行成功。通过以下代码可知execute方法输入的任务是一个Runnable类的实例。 threadpool.execute(new Runnable(){public void run()原创 2013-10-08 18:38:30 · 770 阅读 · 0 评论 -
并发实战值之----线程池--线程池的关闭、监控
4,线程池的关闭 我们可以通过调用线程池的shutdown或shutdownNow方法来关闭线程池,但是它们的实现原理不同,shutdown的原理是只是将线程池的状态设置成SHUTDOWN状态,然后中断所有没有正在执行任务的线程。shutdownNow的原理是遍历线程池中的工作线程,然后逐个调用线程的interrupt方法来中断线程,所以无法响应中断的任务可能永远无法终止。shutdow原创 2013-10-08 18:40:24 · 1901 阅读 · 0 评论 -
并发实战值之----run()和start()方法解析
一,调用run()和start()方法的区别在你新建一个线程的时候,你必须调用start()方法,让线程进入“就绪”状态,等待JVM调用执行,JVM会自动调用run()方法;如果你没有调用start()方法,而是直接调用run()方法,那么,run()方法内的代码还是会执行,但是调用执行run()方法的不是新建的线程,而是创建新线程的当前线程,想要让创建的新线程执行run()方法,必须调用原创 2013-10-08 18:34:35 · 522 阅读 · 0 评论 -
并发实战值之----线程池--线程池的创建
2,线程池的创建:(1)我们可以通过ThreadPoolExecutor类来创建一个线程池。 new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milli原创 2013-10-08 18:38:00 · 798 阅读 · 0 评论 -
并发实战值之----线程的安全性
1,安全性??(1)何谓线程安全?我的理解是,如果你的对象状态(实例变量或是静态变量)得到“正确”的转变,那么该对象就是线程安全的;(2)所以 如果你的对象是无状态的或者状态不可变的或者状态不共享的,那么它绝对是线程安全的;如果你的对象的状态是共享的、而且是可变的,那么就必须保证你的“改变状态的代码”是原子性的,才能保证线程安全;总之,线程不安全是因为存在“竞态条件”。原创 2013-10-11 13:57:18 · 634 阅读 · 0 评论 -
细说中断线程
中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true)。它并不像stop方法那样会中断一个正在运行的线程。判断线程是否被中断判断某个线程是否已被发送过中断请原创 2013-10-21 16:51:20 · 469 阅读 · 0 评论 -
volatile
进来做了些并发方面的东西,用了下volatile,便做了如下的小结,以便日后查用。1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的 3.原创 2014-03-02 23:35:03 · 468 阅读 · 0 评论 -
深入研究java.lang.ThreadLocal类
一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制原创 2014-03-24 09:45:14 · 424 阅读 · 0 评论