牛客网刷题知识点

来源:互联网 发布:软件开发图标素材 编辑:程序博客网 时间:2024/06/07 01:30

原文链接地址:http://blog.csdn.net/pbymw8iwm/article/details/6799247

线程占有的都是不共享的:栈 、 寄存器、 状态、 程序计数器
wait()、notify()和notifyAll()是 Object类 中的方法 ;
Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、 notify(),使用Condition1的await()、signal()这种方式实现线程间协作更加安全和高效。

虚存管理和实存管理的主要区别是:实存要求一程序全部装入内存才开始运行,虚存允许程序在执行的过程中逐步装入

引入缓冲的主要目的:
1.缓和处理机和I/O设备间速度不匹配的矛盾
2.减少对CPU的中断次数
3.提高CPU和I/O设备之间的并行性
原语通常由若干条指令组成,用来实现某个特定的操作。通过一段不可分割的或不可中断的程序实现其功能。原语是操作系统的核心,它不是由进程而是由一组程序模块所组成,是操作系统的一个组成部分,它必须在系统态下执行,并且常驻内存,而个别系统有一部分不在管态下运行。
原语和广义指令都可以被进程所调用,两者的差别在于原语有不可中断性,它是通过在执行过程中关闭中断实现的,且一般由系统进程调用。许多广义指令的功能都可为用户态下运行的系统进程完成,例如文件的建立、打开、关闭、删除等广义指令,都是借助中断进入管态程序,然后转交给相应的进程,最终由进程实现其功能。引进原语的主要目的是为了实现进程的通信和控制。

Thread.yield()方法表示当前进程愿意让出CPU使用权,而且只能让给相同优先级的线程使用

Thread可以被继承,用于创建新的线程
Number类可以被继承,Integer,Float,Double等都继承自Number类
Double类的声明为 public final class Doubleextends Numberimplements Comparable<Double>
Math类的声明为 public final class Mathextends Object
ClassLoader可以被继承,用户可以自定义类加载器

ThreadLocal的类声明:public class ThreadLocal<T>
可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。所以AB都不对。
ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本,维护了自己独有的变量拷贝。所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立。
由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,变量被彻底封闭在每个访问的线程中。

max(磁盘到缓冲区,CPU处理) + 缓冲区到用户区 = max(80, 30) + 40 = 120
max(磁盘到缓冲区,CPU处理) + 缓冲区到用户区 = max(80, 30) + 40 = 120

如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;
如果系统中有内核态线程,则操作系统可以按线程进行调度;

Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)
Linux线程间通信:互斥量(mutex),信号量,条件变量
Windows进程间通信:管道、消息队列、共享内存、信号量 (semaphore) 、套接字(socket)
Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)

0 0