Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311008
  • 博文数量: 169
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2520
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-12 22:00
文章分类

全部博文(169)

文章存档

2015年(4)

2014年(163)

2013年(2)

我的朋友

分类: Java

2014-09-11 15:01:05

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎。大多数待遇丰厚的 Java 开发职位都要求开发者精通多线程技术并且有丰富的 Java 程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。

    鉴于此,的龙头老大广州传智播客特意为广大Java程序员提供了这套线程相关的热门面试题,你可以用它来好好准备面试。

  1) 什么是线程?

  线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要 100 毫秒,那么用十个线程完成改任务只需 10 毫秒。Java 在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。

  2) 线程和进程有什么区别?

  线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。更多详细信息请搜索:广州传智播客Java培训

  3) 如何在 Java 中实现线程?

  在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable 接口来执行,由于线程类本身就是调用的 Runnable 接口所以你可以继承java.lang.Thread 类或者直接调用 Runnable 接口来重写 run ()方法实现线程。更多详细信息请搜索:广州传智播客Java培训

  4) 用 Runnable 还是 Thread?

  这个问题是上题的后续,大家都知道我们可以通过继承 Thread 类或者调用 Runnable 接口来实现线程,问题是,那个方法更好呢?什么情况下使用它?这个问题很容易回答,如果你知道 Java 不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类,当然是调用 Runnable 接口好了。更多详细信息请搜索:广州传智播客Java培训

  6) Thread 类中的 start () 和 run () 方法有什么区别?

  这个问题经常被问到,但还是能从此区分出面试者对 Java 线程模型的理解程度。start ()方法被用来启动新创建的线程,而且 start ()内部调用了 run ()方法,这和直接调用 run ()方法的效果不一样。当你调用 run ()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start ()方法才会启动新线程。更多详细信息请搜索:广州传智播客Java培训

  7) Java 中 Runnable 和 Callable 有什么不同?

  Runnable 和 Callable 都代表那些要在不同的线程中执行的任务。Runnable 从 JDK1.0 开始就有了,Callable 是在 JDK1.5 增加的。它们的主要区别是 Callable 的 call () 方法可以返回值和抛出异常,而 Runnable 的 run ()方法没有这些功能。Callable 可以返回装载有计算结果的 Future 对象。更多详细信息请搜索:广州传智播客Java培训

  8) Java 中 CyclicBarrier 和 CountDownLatch 有什么不同?

  CyclicBarrier 和 CountDownLatch 都可以用来让一组线程等待其它线程。与 CyclicBarrier 不同的是,CountdownLatch 不能重新使用。更多详细信息请搜索:广州传智播客Java培训

  9) Java 内存模型是什么?

  Java 内存模型规定和指引 Java 程序在不同的内存架构、CPU 和操作系统间有确定性地行为。它在多线程的情况下尤其重要。Java 内存模型对一个线程所做的变动能被其它线程可见提供了保证,它们之间是先行发生关系。这个关系定义了一些规则让程序员在并发编程时思路更清晰。比如,先行发生关系确保了:线程内的代码能够按先后顺序执行,这被称为程序次序规则。 对于同一个锁,一个解锁操作一定要发生在时间上后发生的另一个锁定操作之前,也叫做管程锁定规则。 前一个对volatile的写操作在后一volatile的读操作之前,也叫volatile变量规则。 一个线程内的任何操作必需在这个线程的 start ()调用之后,也叫作线程启动规则。 一个线程的所有操作都会在线程终止之前,线程终止规则。一个对象的终结操作必需在这个对象构造完成之后,也叫对象终结规则。 
可传递性 

  10) Java 中的 volatile 变量是什么?

  volatile 是一个特殊的修饰符,只有成员变量才能使用它。在 Java 并发程序缺少同步类的情况下,多线程对成员变量的操作对其它线程是透明的。volatile 变量可以保证下一个读取操作会在前一个写操作之后发生,就是上一题的 volatile 变量规则。点击这里查看更多 volatile 的相关内容。

    如果您对此份题目和解答还是一知半解,想在广州找个Java培训机构,或者Android培训机构,那么就来广州传智播客体验体验吧!
 

 

阅读(404) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~