《Java编程思想》学习笔记(第二十一章):并发
来源:互联网 发布:centos 7 阿里云 编辑:程序博客网 时间:2024/05/17 22:11
并发的解决的问题:
速度
设计可管理性
更快的执行
并发可以提高在单处理器上的程序性能;
实现并发最直接的方式是在操作系统级别使用进程;
- 周期性的将CPU从一个进程切换到另一个进程;
- 但是JAVA使用的并发系统会共享内存和I/O这样的资源,所以必须要协调不同驱动线程任务对这些资源的使用;
线程机制
- 机制:切分CPU时间,子线程都能分配到一定的时间执行任务;
- 好处:CPU的个数可以任意扩展,与实际的线程代码运行无关;
Thread
- 让步:Thread.yield():在run()方法中调用Thread.yield()方法是对线程调度器的一种建议;
- 线程调度器:Java线程机制的一部分,可以将CPU从一个线程转移给另一个线程;
- 暗示可以交给别的同样优先级的线程运行;
- 可以看到任务换进换出的证据;
- 执行:run():导出Runnable类的时候必须要有一个run()方法,这个方法不会产生任何内在的线程能力,要实现线程行为,必须显示的将一个任务附着到线程上;
优先级
- 设置优先级:在run()方法的开头处,Thread.currentThread().setPriority(int priority) ;
- 实际原理:提高频率(实际优先分配时间片);
- 常用级别:MAX_PRIORITY,NORM_PRIORITY,MIN_PRIORITY;
后台线程(daemon)
- 定义:程序在运行的过程中在后台提供的一种通用服务的线程,这种线程并不能成为程序不可获取的部分;
- 理解:如果非后台线程死了,那么后台线程也就会被杀死;
- 设置:在启动(start())方法之前,调用threadSymbol(实现了runnable接口的一个线程实例).setDaemon(true);
- 判断:isDaemon();
加入一个线程(join)
- 定义:如果一个线程在另一个线程t上调用t.join(),那么次线程将被挂起,知道目标线程t结束后才恢复;
- 理解:有A和B两个线程,如果A线程在run()方法中,调用了B.join(),意思就A线程跑在路上的时候,把B线程的任务给加进来了,那么就只能等着B跑完然后A接着跑。但是呢,如果想强制中断也可以啊。直接掉B.interrupt()方法中断掉B线程,但是记得try-catch; +
0 0
- 《Java编程思想》学习笔记(第二十一章):并发
- 《java编程思想》第二十一章 并发
- <java编程思想>(thing in java) 阅读笔记(第十六章至第二十一章)
- Thinking in Java学习笔记 第二十一章:并发
- java编程思想学习笔记:并发
- java编程思想并发学习笔记(rocket and rockets)
- 并发(java编程思想)笔记
- JAVA编程思想笔记--并发
- Java编程思想学习笔记——并发
- 《Java编程思想》学习笔记18——并发编程(一)
- 《Java编程思想》学习笔记19——并发编程(二)
- 《Java编程思想》学习笔记18——并发编程(一)
- 《Java编程思想》学习笔记18——并发编程(一)
- 《Java编程思想》学习笔记19——并发编程(二)
- 第二十一章:并发(中)
- 第二十一章:并发(下)
- java编程思想阅读笔记(十一)并发
- Java编程思想笔记—并发1
- 其他
- 2016暑假第一次测验(7-14)
- 关于Redhat的shell、用户管理和快捷键总结
- tungsten-replicator问题与解决方法
- 发送消息(SendMessage)常识普及
- 《Java编程思想》学习笔记(第二十一章):并发
- sudo apt-get install mysql-server 安装不上
- nginx负载均衡
- C++11 std::bind笔记
- 微信各类地图语音导航
- 使用NodeJS的Express4.X框架写WEB应用
- C编程—找单链表是否存在环,并找出环起点所在的节点位置
- NKOI 1922 第K小数
- 标题可能被吃了