试题详情
- 简答题什么是线程?它产生的背景是什么?线程有几种状态?说明状态变化调用的方法。
- 线程是一个进程在执行过程中产生的多条执行线索。每个线程有它产生、存在和消亡的过程,是动态的。线程由线程内核对象和线程堆栈两部分组成,相对于组成进程的内核对象及虚拟地址空间,线程使用的系统资源比进程少得多。
它产生的背景是:操作系统按照一定的策略(优先级、循环等)调度各个进程执行,以最大限度地利用计算机的各种资源。一个进程运行期间,拥有的主要资源包括地址空间(存放text,data,stack)、打开文件表、资源控制信息、核心栈。除了text可被其他进程共享外,上述资源都属进程私有。因此CPU从运行一个进程转换到运行另一个进程时,为进程保存、恢复的开销很大,并发效率低。如果把进程所占私有资源与进程中的运行代码相分离,在一个地址空间中便可运行多个代码段,由此产生线程概念。 线程的状态有以下四种:
(1)创建状态(New-Thread);
(2)运行状态(Runnable);
(3)不可运行状态(Not-Runnable);
(4)死亡状态(Dead)。
对于上面4种状态,各有特定的使线程返回可运行状态的方法与之对应,如下所述:
(1)如果线程处于睡眠状态中,sleep()方法中的参数为休息时间,当这个时间过去后,线程即为可运行的;
(2)如果一个线程被挂起,需调用resume()方法才能返回;
(3)如果线程在等待条件变量,那么要停止等待的话,需要该条件变量的线程对象调用notifyAll()方法;
(4)如果在I/O流中发生线程阻塞,则特定的I/O完成可结束这种不可运行状态。 需要注意的是每种方法仅仅对相应的情况才有作用,例如当一个线程睡眠并且睡眠时间还没有结束时,调用resume()方法是无效的。 关注下方微信公众号,在线模考后查看
热门试题
- 简述给窗口添加菜单的基本过程。
- 使用()方法加载和注册驱动程序后,由()
- 什么是抽象类,如何定义抽象类?
- 下列最终属性 i 的
- Java语言具有较好的安全性、可移植性及
- Struts通过()支持MVC的视图开发
- 静态初始化块是在类被加载的时候执行。
- 如果要在JAVA中调用ORACLE的存储
- 下列哪种操作不会抛出异常?()
- 在一绘图程序当中,可以画出draw()各
- 用Javac编译Java源文件后得到代码
- 在switch(expression)语
- 利用文件输入输出流编写一个实现文件拷贝的
- 以下代码创建几个对象() String
- 简述泛型的作用。
- 编写程序,接收用户从键键盘上输入的三个整
- 以下哪个方法只对使用了缓冲的流类起作用?
- Frame框架中的按钮,会随下面哪种布局
- 下列哪个是面向大型企业级用容器管理专用构
- 数组中各个元素的数据类型是()。