
多线程
芝麻开花不开门
这个作者很懒,什么都没留下…
展开
-
线程创建------通过继承Thread类
步骤通过继承Thread类创建并启动线程的步骤:(1)定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。(2)创建Thread子类的实例,即创建线程对象。 (3)调用线程对象的start()方法来启动该线程。 代码实例 代码实现如下:定义Runnable接口的实现类,并重写该类的run()方法,该run()方法的方法体就是线程执行体。(2)创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。(可以在创建Thread对象时为该Thread对象指定一个名字) (3)调用线程对象...原创 2019-07-29 19:07:07 · 1365 阅读 · 0 评论 -
线程创建------使用Callable和Future
Start 从Java5开始,Java提供了Callable接口(也是函数式接口),该接口提供了一个call()方法可以作为线程执行体,相较于run()方法,call()方法功能更强大:(1)call()方法可以有返回值。(2)call()方法可以声明抛出异常。由于Callable接口是Java5新增的接口,而且它不是Runnable接口的子接口,所以就不能作为Thread的targe...原创 2019-07-29 20:09:25 · 491 阅读 · 0 评论 -
线程的生命周期------新建和就绪
当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)这5中状态。 Let's start当程序使用new关键字创建一个线程之后,这个线程就处于新建状态,此时Java虚拟机为其分配内存,并初始化其成员变量的值。此时的线程对象没有表现出任何...原创 2019-07-29 20:37:32 · 200 阅读 · 2 评论 -
线程的生命周期------运行和阻塞
当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)这5中状态。上一篇已经介绍新建和就绪状态了,这篇接着介绍运行和阻塞状态。 运行(Running)处于就绪状态的线程获得CPU,开始执行run()方法的线程执行体,则该线程处于运行状态...原创 2019-07-29 21:13:37 · 451 阅读 · 3 评论 -
深入理解synchronized实现原理
在多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这种资源可能是对象、变量、文件等。由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。于是,JVM内置锁synchronized登上了舞台。 如何使用synchronized既可以同步方法(同步实例方法、类方法),也可以同步代码块。//同步实例方法:public synchronized vo...原创 2019-08-03 17:09:31 · 515 阅读 · 1 评论 -
【多线程】wait与notify
wait与notify原创 2019-08-18 21:46:07 · 251 阅读 · 0 评论