![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Thinking In Java4 线程
文章平均质量分 79
monica888888
这个作者很懒,什么都没留下…
展开
-
atomicity and volatility 代替synchronized 对象锁 的另一种方法(原子操作+可见性)
参考文章:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#volatile https://www.ibm.com/developerworks/library/j-jtp06197/index.html https://tutorials.jenkov.com/ja...原创 2017-06-21 15:34:05 · 469 阅读 · 0 评论 -
Using Executor 管理线程池,用线程池建立线程
一、功能:建立干活线程对象全部放入线程池中,驱动线程不用我们写了,这个线程池应该会自己去建立驱动线程1、Executor: 1》管理 干活线程 对象 2》以前(new Thread 驱动线程)来驱动干活线程干活。 3》现在不需要建立驱动干活线程了,建立好干活线程后,直接交给Executor来管理。 对象(方法)------干活线程------驱动线程--executor2、 Execu...原创 2017-05-29 09:20:21 · 247 阅读 · 0 评论 -
Producing return values from tasks 建立干活线程时带有返回值
前两种线程执行的干活线程的方法无返回值,现在方法出现一个返回值。一、哪么线程如何执行这个方法?1》对于一个对象调用方法,有一个返回值2》现在有多个线程时,对应对象也是多个,因此返回值肯定是用袋子类对象(容器或是数组)来装返回值。3》根据方法的返回值来选择袋子类对象。 对于数组肯定不合适,因为是newCachedThreadPool 线程池的线程不确定是多少,所以返回值选择容器对象 Array...原创 2017-05-29 16:13:35 · 199 阅读 · 0 评论 -
驱动线程和干活线程的关系
一、基本概念干活:就是执行类中的方法线程类使用的相关技术:接口多态(多种实现方法) 1》一个接口 2》多种实现方法 实现Runnable的所有类:是同一类型,全部叫线程(也是对象),利用这个关系,可以实现线程实现类之间相互连接。1、看了大多数线程的文章,以为线程就是去完成任务(如取数据啊,构建登陆页)2、错,其实线程本身来说,什么也干不了,它...原创 2017-06-01 15:20:26 · 544 阅读 · 0 评论 -
线程状态图
线程间的状态转换: 1. 新建(new):当一个线程被建立后,只能在这个状态下呆片刻。 1》去分配一些必要的系统资源和执行初始化。 2》这样才有资格接收Cpu的时间。 3》调度者转换这个线程到runnable or blocked state. 难道...转载 2017-06-02 06:11:47 · 295 阅读 · 0 评论 -
Java中Synchronized的用法
原文:http://blog.csdn.net/luoweifu/article/details/46613015 synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作...转载 2017-06-02 10:02:06 · 233 阅读 · 0 评论 -
Joining a thread 等另一个线程执行完(die)
join:因为是连接,所以需要两个线程,一、简单功能介绍 1、 正在干活的线程,你想和谁连啊(即对方线程):正在干活方表示这活干不下去了,一定要等别人全部干完才能干。 方法: 调用对方.join() 2、例子:比如正在洗衣服(正在执行线程),这时楼下水管破了,只能自来水公司的人修好水管(对方线程) 即:自来水公司.join() 3、sleepy1.join:正在执行...原创 2017-06-03 17:46:44 · 496 阅读 · 0 评论 -
建立和使用干活线程的几种方式
一、建立干活线程1、 2、建立干活线程和使用干活线程混合在一个Test1中:问题是一个对象有一些数据还没有初始化,而干活线程就提前执行了。 建立干活线程用Runnable,驱动线程作为类实例变量 t1,new Test1() ,启动干活线程 Test1 implements Runnable{ Thread t1=new Thread(this), public Test1() {...原创 2017-06-08 14:04:16 · 328 阅读 · 0 评论 -
Synchronized 互斥块(对象锁) 一个对象和一个monitor 的关系
Synchronized :锁住的是对象,出现synchronized表示随后的代码块要用到共享数据了,要锁住了。一、3种形式。1、synchronized(obj):可以任意指定对象.2、synchronized(this):当前对象:当一个类加到内存时,常量池有一个地址直接指向当前正在执行的对象. 3、public synchronized void run():当前对象(this),这是实...原创 2017-06-09 08:10:55 · 5561 阅读 · 0 评论 -
Synchronized wait() notifyAll/notify 另一个方法(合作关系)
一、基本概念Synchronized 合作关系,和Synchronized 互斥块锁相同:反正是锁住后面的代码块,cpu单独执行。不同:Synchronized,wait,notifyAll 合作关系,干完活后指定别人去干,一看见这个表示这活干不下去了,必须等别人干完,发消息后,自己才能继续干完。 Synchronized 互斥,干完活后,没有指定别人干,一堆人通过竞争才能拥有共...原创 2017-06-15 07:49:32 · 341 阅读 · 0 评论 -
jvm 有 Daemon,non-daemon 两种线程
看见这两个,表示如何结束线程了, 即终止一个应用。 1》 non-daemon线程结束----强制daemon干活线程结束,不管它执行到哪里。 2》non-daemon线程结束---non-daemon干活线程执行完,自己结束。 3》non-daemon Excutor 管理所有的干活线程,也许是最好的一种方式结束所有线程。 (1) TimeUnit.SECONDS.sleep...原创 2017-06-16 13:14:15 · 2802 阅读 · 0 评论 -
What is Java thread priority? 什么是java线程优先级
就一个小程序,运行一次输出结果不一样,这是因为线程调度方法不能确定,取决你当前操作系统的进程,线程调度优先级。所以要想线程按一定的顺序运行,哪么只能选择Synchronized 互斥(对象锁)和 wait notify合作关系了。一、概念1、干活线程建立时是以排队的顺序,排在前面的干活线程先执行, 同时也给了一个默认的优先级 5。2、sleep(100) :可以暂停当前干活线程的执行,...原创 2017-06-17 08:13:49 · 4555 阅读 · 0 评论 -
synchronization and ReentrantLock 的比较
文章来源:https://www.ibm.com/developerworks/library/j-jtp10264/一、A quick review of synchronized Declaring a block of code to be synchronized has two important consequences, generally referred to asatomici...转载 2017-06-19 15:16:09 · 543 阅读 · 0 评论 -
synchronized 对象锁和 ReentrantLock非公平锁tryLock() 的比较
看见 程序里有 Lock,ReentrantLock 表示共享数据块要用 Lock对象锁住了。一、简单描述1、synchronized:当没有获得锁时,一直死等,不能放弃2、ReentrantLock ():无参数的构造器,是默认非公平锁。 非公平锁:随时来,随时取,不管就绪队列是否已经有人了,取不到,就放弃锁。 1>马上试一下,如果不能获得锁就放弃了,逛超市去。 ...原创 2017-06-20 15:08:24 · 588 阅读 · 0 评论 -
Java Volatile 变量的可见性
文章:点击打开链接lock有两种: 一种是共享资源互斥,一种是可见性(visibility) 1》互斥:是由syn的对象锁和wait(),notify()合作,lock锁来保证 visibility:就是由volatile变量+原子操作----代替syn对象锁(主要由变量之间不能改变顺序来决定)。 visibility:1》一个线程改变一个值后,另...转载 2017-06-22 21:12:42 · 428 阅读 · 0 评论 -
Basic threading 建立线程(Thread)
一、1》一个对象调用方法,需要几个步骤完成 2》以前:一个对象调用自己的方法去完成一项任务。 3》如果有多个对象执行方法,一个对象执行一个方法后,另一个对象继续执行自己的任务............ 这样太浪费CPU,即顺序在Cpu里执行。 4>对象自己也能执行方法,但是现在交给线程(也叫驱动线程)去执行方法。 ...原创 2017-05-27 15:59:42 · 400 阅读 · 0 评论