`
uule
  • 浏览: 6337332 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

java多线程面试题

 
阅读更多

面试题目

 

1.什么是多线程编程?什么时候使用?
多线程一般用于当一个程序需要同时做一个以上的任务。多线程通常用于GUI交互程序。一个新的线程被创建做一些耗时的工作,当主线程保持界面与用户的交互。

2.为什么wait(),notify()和notifyall()函数定义在Object类里面?
因为所有类都是继承于Object类,这样所有类就可以简单的进行多线程编程了。

3.wait()方法和sleep()方法有什么不同?
sleep()方法执行后仍然拥有线程,只是延时。而wait方法放弃了线程控制,其它线程可以运行。

4.Thread和Runnable有什么不同?
JAVA线程控制着程序执行的主路径。当你用java命令调用JVM时,JVM创建了一个隐式线程来执行main方法。Thread类提供了主线程调用其它线程并行运行的机制。

Runnable接口定义了一个能被Thread运行的类。实现Runnable的类只需要实行run方法。可以很灵活的扩展现在的已经继承自其它父类的类。而thread则不可以,因为java只允许继承一个父类。

5.我可以重载start()方法么?
因为Thread类的start()方法并不是final方法,因此可以,但不推荐这样做。因为在start()方法里创建一个新的线程,进行特定的操作。你可以传递一个实现了Runnable接口的类到Thread,或者继承Thread类,重载run()方法。

6. SwingUtilities.invokeLater(Runnable)方法是用来做什么用的?
这个方法可以在不干扰GUI的事件队列的情况下在应用程序中执行一个线程。它将runnable对象放在事件的队列中然后立即返回。只有当这个队象移到队列的最前端时它的run()方法才被调用。

7.volatile是用来做什么的?
volatile 的意思是变量的值不能被JVM优化,这样可以在某一程度上保证变量的可见性。

8.什么是绿色线程?
绿色线程是指所有的代码JVM都执行在单个操作系统线程,即使是多线程程序,JVM间断的控制多线程程序而不是用其它的操作系统线程,这种模式已经被废弃了。

9.编译运行下面的代码会发生什么?

  1. public class Bground extends Thread{
  2.     public static void main(String argv[])
  3.     {
  4.         Bground b = new Bground();
  5.         b.run();
  6.     }
  7.     public void start()
  8.     {
  9.        for (int i = 0; i <10; i++){
  10.            System.out.println("Value of i = " + i);
  11.        }
  12.     }
  13. }


A.编译错误,Thread类中的run方法没有定义
B.运行时错误,Thread类中的run方法没有定义
C.编译无错,打印0到9.
D.编译无错,不打印任何值
答案:D,调用run不创建线程。


10.关于下面一段代码,哪些描述是正确的

  1. public class Agg {
  2.     public static void main(String argv[]) {
  3.         Agg a = new Agg();
  4.         a.go();
  5.     }
  6.  
  7.     public void go() {
  8.         DSRoss ds1 = new DSRoss("one");
  9.         ds1.start();
  10.     }
  11. }
  12.  
  13. class DSRoss extends Thread {
  14.     private String sTname = "";
  15.  
  16.     DSRoss(String s) {
  17.         sTname = s;
  18.     }
  19.  
  20.     public void run() {
  21.         notwait();
  22.         System.out.println("finished");
  23.     }
  24.  
  25.     public void notwait() {
  26.         while (true) {
  27.             try {
  28.                 System.out.println("waiting");
  29.                 wait();
  30.             } catch (InterruptedException ie) {
  31.             }
  32.             System.out.println(sTname);
  33.             notifyAll();
  34.         }
  35.     }
  36. }

A.编译错误
B.能够编译,输出“waiting"
C.能够编译, 输出“waiting",紧接着输出"finish"
D.运行时错误,会抛异常
答案:D,wait必须在Synchronize块或者函数里。


11.编译运行下面的代码会发生什么

  1. public class Test extends Thread {
  2.     private String sThreadName;
  3.  
  4.     public static void main(String argv[]) {
  5.         Test h = new Test();
  6.         h.go();
  7.     }
  8.  
  9.     Test() {
  10.     }
  11.  
  12.     Test(String s) {
  13.         sThreadName = s;
  14.     }
  15.  
  16.     public String getThreadName() {
  17.         return sThreadName;
  18.     }
  19.  
  20.     public void go() {
  21.         Test first = new Test("first");
  22.         first.start();
  23.         Test second = new Test("second");
  24.         second.start();
  25.     }
  26.  
  27.     public void start() {
  28.         for (int i = 0; i < 2; i++) {
  29.             System.out.println(getThreadName() + i);
  30.             try {
  31.                 Thread.sleep(100);
  32.             } catch (InterruptedException e) {
  33.                 System.out.println(e.getMessage());
  34.             }
  35.         }
  36.     }
  37. }

A.编译错误
B.输出first0, second0, first1, second1.
C.输出first0, first1, second0, second1.
D.运行时错误
答案:C,如果要实现B的效果的话应该重载run,而不是start


12.编译运行下面的代码会发生什么

  1. public class Test {
  2.     public static void main(String argv[]) {
  3.         Pmcraven pm1 = new Pmcraven("one");
  4.         pm1.run();
  5.         Pmcraven pm2 = new Pmcraven("two");
  6.         pm2.run();
  7.     }
  8. }
  9.  
  10. class Pmcraven extends Thread {
  11.     private String sTname = "";
  12.  
  13.     Pmcraven(String s) {
  14.         sTname = s;
  15.     }
  16.  
  17.     public void run() {
  18.         for (int i = 0; i < 2; i++) {
  19.             try {
  20.                 sleep(1000);
  21.             } catch (InterruptedException e) {
  22.             }
  23.             yield();
  24.             System.out.println(sTname);
  25.         }
  26.     }
  27. }

A.编译错误
B.输出One One Two Two
C.输出One Two One Two
D.输出One Two One Two
答案B 调用run不创建线程。仍然是同步。

 

来源:http://blog.sina.com.cn/s/blog_4127feea0100m2kj.html

 

分享到:
评论

相关推荐

    5153-微信小程序个人日程安排微信小程序的实现+ssm(源码+数据库+lun文).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    旅行智能推荐系统.zip

    本项目旨在开发一个智能旅行推荐系统。该系统利用Yelp数据集,采用混合的内容推荐和协同过滤方法为用户提供个性化的旅行建议。通过整合React前端和fla后sk端技术,系统提供了一个无缝的用户体验,能够分析用户偏好和行为,并根据这些信息进行定制化的推荐。此外,该系统具有适应性,随着用户交互的持续进行,能够不断完善推荐结果。整体而言,这是一个结合了先进推荐算法和现代化Web技术的先进项目,旨在为用户提供更加智能和个性化的旅行建议。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    自己整理的Ansible 自动化运维实战笔记分享给需要的同学.zip

    自己整理的Ansible 自动化运维实战笔记分享给需要的同学.zip

    基于 Flask 和 Stripe 的图书购买系统.zip

    这是一个使用 Flask 和 Stripe 元素构建的电子商务应用程序样本。该项目旨在实现图书购买功能,并通过集成 Stripe 来完成支付流程。项目采用了 Flask 轻量化 Web 框架,利用 Werkzeug 和 WSGI 提供了许多实用功能。该项目通过使用 HTML 渲染和简单的 API 调用实现基本功能。为了完成此项目,需要替换 Stripe 的秘钥和发布密钥。运行服务器后,可以浏览到本地站点,并在其中完成图书购买和支付流程。Stripe API 调用的测试需要添加书籍并完成结账流程。此外,该项目还面临了一些挑战,如集成 Stripe Elements 和实现服务器端 API 调用的数据访问对象模式等。尽管此项目为简化版,但它提供了一个在真实环境中实现电子商务网站的初步框架,为进一步的扩展和改进奠定了基础。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    5208-微信小程序校园约拍微信小程序设计与实现ssm(源码+数据库+lun文).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    基于Springboot+Vue的流浪宠物管理系统的设计与实现

    【基于Springboot+Vue的流浪宠物管理系统的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的精准扶贫管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行!

    bacpypes-0.13.2-py3-none-any.whl

    bacpypes-0.13.2-py3-none-any.whl

    5146-微信小程序家庭财务管理系统的设计与实现+ssm(源码+数据库+lun文).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    5338-微信小程序微信小程序的学生选课系统(源码+数据库).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    咖啡商铺电商平台.zip

    这是一个基于Python Flask框架构建的电子商务网站项目,旨在提供一个在线销售咖啡及相关商品的平台。项目使用了MySQL数据库进行数据存储和管理,保证了数据的可靠性和安全性。同时,项目利用Bootstrap进行前端设计,使得网站界面友好、美观,用户体验良好。该项目涵盖了后端开发、数据库管理和前端开发等多个方面,是一个综合性的电子商务项目。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下载4使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    linux磁盘整理:创建文件系统是指在磁盘分区上建立一种组织和存储数据的方法 Linux 支持多种文件系统类型,如 ext2

    创建文件系统是指在磁盘分区上建立一种组织和存储数据的方法。Linux 支持多种文件系统类型,如 ext2、ext3、ext4、XFS、Btrfs 等。 示例: 创建一个 ext4 文件系统:   bash 深色版本 1sudo mkfs.ext4 /dev/sdb1

    基于Springboot+Vue的智能学习平台系统的设计与实现

    【基于Springboot+Vue的智能学习平台系统的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的智能学习平台系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行!

    读Excel工具类并处理合并单元格

    Excel工具类,读取包含合并单元格的Excel,合并后的单元格当做拆分后的处理,如: 对于一个2 * 3 的合并单元格,读取后会拆分为 6 个单元格,拆分后每个单元格都是有值的,且值都等于拆分前的合并单元格的值。

    学习笔记-二分图染色法和匈牙利算法

    学习笔记-二分图染色法和匈牙利算法

    气象监测Web应用.zip

    这是一个基于Python的web应用程序,使用了Flask框架、Bootstrap和JQuery技术。该程序可能用于气象数据的展示、监测和预警等功能。由于项目描述较为简洁,具体功能和细节实现尚不清楚,建议进一步查看项目代码和相关文档以获取更多信息。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    bacpypes-0.16.7-py3-none-any.whl

    bacpypes-0.16.7-py3-none-any.whl

    5253-微信小程序基于springboot汽车维修管理系统微信小程序springboot(源码+数据库+lun文).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    毕业设计基于STM32F402RCT6柔性可穿戴传感器的脉搏监测系统设计与实现源码(带硬件资料)+项目详细说明

    毕业设计基于STM32F402RCT6柔性可穿戴传感器的脉搏监测系统设计与实现源码(带硬件资料)+项目详细说明,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 设计了一种基于柔性可穿戴传感器的脉搏监测系统。采用 STM32F402RCT6 微控制器,实现了可穿戴的脉搏监测硬件系统。采用 Qt 框架开发了一款具有脉搏信号预处理、脉搏频率特征分析、脉搏波形显示等功能的脉搏监测上位机软件系统。 # 硬件设计 脉搏监测系统的硬件是使用立创 EDA 专业版软件设计的。 TM32的源码[LowerComputerSource](Software\LowerComputerSource\readme.md) 使用 C 语言以及 GNU Arm 嵌入式工具链,基于 1.9.0 版的 STM32F4 的 DSP 和标准

    5158-微信小程序课程答疑微信小程序+ssm(源码+数据库+lun文).zip

    本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。本系统主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业。

    bacpypes-0.13.7-py3-none-any.whl

    bacpypes-0.13.7-py3-none-any.whl

Global site tag (gtag.js) - Google Analytics