`
249009188
  • 浏览: 47948 次
  • 性别: 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.编译运行下面的代码会发生什么?
public class Bground extends Thread{
    public static void main(String argv[])
    {
        Bground b = new Bground();
        b.run();
    }
    public void start()
    {
       for (int i = 0; i <10; i++){
           System.out.println("Value of i = " + i);
       }
    }
}

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

10.关于下面一段代码,哪些描述是正确的
public class Agg {
    public static void main(String argv[]) {
        Agg a = new Agg();
        a.go();
    }
 
    public void go() {
        DSRoss ds1 = new DSRoss("one");
        ds1.start();
    }
}
 
class DSRoss extends Thread {
    private String sTname = "";
 
    DSRoss(String s) {
        sTname = s;
    }
 
    public void run() {
        notwait();
        System.out.println("finished");
    }
 
    public void notwait() {
        while (true) {
            try {
                System.out.println("waiting");
                wait();
            } catch (InterruptedException ie) {
            }
            System.out.println(sTname);
            notifyAll();
        }
    }
}

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

11.编译运行下面的代码会发生什么
public class Test extends Thread {
    private String sThreadName;
 
    public static void main(String argv[]) {
        Test h = new Test();
        h.go();
    }
 
    Test() {
    }
 
    Test(String s) {
        sThreadName = s;
    }
 
    public String getThreadName() {
        return sThreadName;
    }
 
    public void go() {
        Test first = new Test("first");
        first.start();
        Test second = new Test("second");
        second.start();
    }
 
    public void start() {
        for (int i = 0; i < 2; i++) {
            System.out.println(getThreadName() + i);
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

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

12.编译运行下面的代码会发生什么
public class Test {
    public static void main(String argv[]) {
        Pmcraven pm1 = new Pmcraven("one");
        pm1.run();
        Pmcraven pm2 = new Pmcraven("two");
        pm2.run();
    }
}
 
class Pmcraven extends Thread {
    private String sTname = "";
 
    Pmcraven(String s) {
        sTname = s;
    }
 
    public void run() {
        for (int i = 0; i < 2; i++) {
            try {
                sleep(1000);
            } catch (InterruptedException e) {
            }
            yield();
            System.out.println(sTname);
        }
    }
}

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

相关推荐

    Java线程面试题Top50[参照].pdf

    Java 线程面试题 Top 50 Java 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。 一、什么是...

    Java线程面试题

    Java线程面试题是Java开发者在面试中常常遇到的核心领域,因为并发处理是现代软件开发中的关键部分。Java语言的并发支持使得它在企业级应用中广泛应用。掌握线程和并发编程不仅能提升程序性能,也是高级Java开发职位...

    java经典多线程面试题

    以下是一些经典的多线程面试题知识点: 1. Java中的线程状态有哪些? - 新建状态(New):线程对象创建后,但尚未启动。 - 就绪状态(Runnable):处于就绪状态的线程随时可能被CPU调度执行。 - 运行状态...

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...

    多线程面试题

    本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的最小单位,一个进程可以有多个线程同时执行任务,提高了程序的运行效率。 2. **Java中的线程创建方式...

    Java线程面试题大全.docx

    Java线程是并发编程的核心部分,它允许程序在同一时间执行多个任务,从而提高了系统的效率和响应性。在Java中,线程是操作系统调度的基本单元,它们在进程内部运行,共享同一内存空间,但每个线程都有自己独立的栈...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 Spring面试题 Spring Boot面试题 Spring Cloud面试题 RabbitMQ面试题 Dubbo 面试题 MyBatis 面试题 ZooKeeper 面试题 数据结构...

    50 道Java 线程面试题(经典)

    理解并熟练掌握这些Java线程知识对于解决并发编程中的问题至关重要,也是Java开发者面试时常常被考察的技能。深入学习包括《Java并发编程实战》在内的专业书籍将有助于进一步提升这方面的专业能力。

    史上最全 Java 多线程面试题及答案

    了解这些核心概念后,开发者可以更好地应对Java多线程面试中可能出现的问题,同时也能在实际项目中灵活运用多线程技术,提升程序性能。多线程编程虽然复杂,但掌握好相关的工具和原理,就能有效地解决并发问题,编写...

    java多线程面试题和答案

    以下是一些关于Java多线程的面试题及其答案,涵盖了基础概念、并发控制、线程安全以及性能优化等方面。 1. **什么是Java多线程?** 多线程是指在单个程序中同时执行多个线程,这样可以提高应用程序的效率和响应...

    线程面试题

    ### Java线程面试题知识点详解 #### 一、线程基本概念 1. **什么是线程?** - 线程是操作系统中能够独立运行的最小单位,它被包含在一个进程中,是进程中的实际执行单元。通过多线程编程可以有效利用多核处理器...

    Java面试题、JVM面试题、多线程面试题、并发编程、设计模式面试题

    Java面试题、JVM面试题、多线程面试题、并发编程、设计模式面试题、SpringBoot面试题、SpringCloud面试题、MyBatis面试题、Mysql面试题、VUE面试题、算法面试题、运维面试题。 收集汇总各行业笔试or编程题解题思路 ...

    java企业面试题大全(18个文档)

    java企业面试题大全(包括18个文档)。1、15个经典面试题.pdf。2、120个Java经典面试题和答案(上).pdf。3、120个Java经典面试题和答案(下).pdf。4、EJB方面.pdf。5、java web面试题.pdf。6、Java基础方面.pdf。7...

    最新各大公司企业真实面试题-Java面试题

    "Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    Java面试题资料,包括100多道基础,中级还有高级面试题

    java后端面试题答案 Java基础面试题 Kafka面试专题及答案 Linux面试专题及答案 多线程面试专题及答案 消息中间件面试专题及答案 ActiveMQ消息中间件面试专题 Dubbo面试及答案 java后端面试题答案 Java基础面试题 ...

    2023最新JAVA面试题集

    2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 ...

    Java面试题、JVM面试题、多线程面试题

    标题提到的是"Java面试题、JVM面试题、多线程面试题",而描述和标签却提及"python编程"。不过,既然您希望聚焦于"Java面试题、JVM面试题、多线程面试题",我将为您详细介绍这些主题。 **Java面试题** 1. **Java是...

Global site tag (gtag.js) - Google Analytics