《java多线程编程核心技术》读书笔记1
来源:互联网 发布:上古卷轴萝莉捏脸数据 编辑:程序博客网 时间:2024/06/04 19:09
第一章:java多线程技能
在学习线程之前我们首先要清楚一下进程的概念:
进程是操作系统结构的基础,是系统进行资源分配的和调度的独立单位。windows上一个运行的word,一个浏览器程序就称之为一个进程。
线程:线程是进程的一部分,一个进程由一个或多个线程组成,线程可以理解为进程中独立运行的子任务,如QQ在运行时就有很多子任务同时运行,再如,好友视频线程,下载线程,传输数据线程,这些不同的任务或功能都有可以同时运行。
多线程的优势:可以充分的利用计算机cpu的资源。相较于单任务环境,多线程可以来回在多个线程任务间进行切换,避免了在单任务环境下某个任务等待自己所期待的事件而不能运行时长时间的占用cpu.
在java中要实现线程有两种方式:一种是继承Thread类,一种是实现Runnable接口,这两种方式都需要实现run方法,线程的执行就是执行从执行run方法开始的。由于java是单继承的所以一般而言,在使用中用到实现Runnablea接口较多,因为同时可以实现继承。Thread类也是实现Runnable接口的。启用线程需要调用线程的start()方法,这是唯一的启动线程的方式。
线程的执行:线程的执行是未知的,意思就是说我们无法知道线程什么时候开始,什么时候结束。当启动线程以后,线程的执行就不归我们管了,并且每一个线程执行启动一次,即只能调用一次start()方法。
构造方法:Thread(),Thread(Runnable target);由此可见我们可以通过线程的通过构造方法给线程传递另一个线程,这样我们就可以在线程的内部去调用另一个线程。
非线程安全:当多个线程之间存在共享的对象是就有可能出现运行错误。
currentThread()方法:该方法可返回代码段正在被哪个线程调用的信息;例如currentThread().getName()返回当前线程名称。
isAlive()方法判读线程是否处于活动状态。
sleep(long mills)的线程暂停执行一定的时间。
getId()取得线程的唯一标识。
stop()方法强制停止线程。不过已经过时。此方法有可能让程序出现意外的错误。
通常停止线程,采用的是interrupt()方法;但是此方法并不会真正的停止线程的执行,只是在线程中添加了一个停止的标记,需要加入一个判读才能让线程停止。
interrupted()方法测试当前线程是否已经中断,如果调用该方法时线程已经中断,则此方法返回true,并且此方法会解除中断状态。所以当第二次调用该方法时会返回false;
isInterrupted()方法测试线程是否中断但是不清除中断状态。
如果要停止一个线程:我们先调用interrupt()方法,然后用isInterrupted()方法判断线程是否中断,如果中断则用return方法返回。
在沉睡中停止线程,会使线程抛出异常,并清除停止状态。
suspend()方法暂停线程;此方法可能导致线程挂起并永久的持有公共对象,导致其他线程无法获得对象进行执行。
resume()方法恢复线程执行;
yield()方法作用是放弃当前线程的CPU资源。让给其他线程执行,但是放弃的时间不确定有可能刚放弃,马上又获得CPU时间片。
java中线程的优先级有十级,1到10,数字越大优先级越高,可以通过setPriority()进行设置,优先级越高的线程有更多的机会获得cpu进行执行。
0 0
- 《java多线程编程核心技术》读书笔记1
- 《java多线程编程核心技术》读书笔记2.1
- 《java 多线程编程核心技术》读书笔记一
- 《java 多线程编程核心技术》读书笔记二
- 《java 多线程编程核心技术》读书笔记三
- 《java 多线程编程核心技术》读书笔记四
- 《java 多线程编程核心技术》读书笔记五
- 《java 多线程编程核心技术》读书笔记六
- 读书笔记——Java多线程编程核心技术
- 多线程编程核心技术读书笔记(一):Java多线程技能
- java多线程 Java核心技术 读书笔记
- 《java多线程编程核心技术》读书笔记2.2:volatile关键词
- 《java多线程编程核心技术》读书笔记3:线程间的通信
- 《java多线程编程核心技术》读书笔记4:Lock的使用
- 《java多线程编程核心技术》读书笔记6:线程中的异常处理
- 《java 多线程编程核心技术》读书笔记三(补充内容)
- java多线程编程核心技术
- 《Java多线程编程核心技术》
- 【产品经理从入门到资深】微信之父张小龙推荐的产品经理必看书籍(培养产品感必备书单)
- linq的知识
- zju 1041 雷达覆盖
- 《喵喵健康用户协议》
- H5音频
- 《java多线程编程核心技术》读书笔记1
- cartographer
- 【交互设计师必备书单】资深交互设计师推荐的交互设计师必看的七本书
- NSTimer的使用
- Maven 安装步骤
- poj 2531 Network Saboteur
- 杂谈:996有点可笑
- Hololens入门之手势识别(使用Manipulation gesture控制物体平移)
- MySQL忘记密码的正确解决方法