关于线程的面试题(1)

1) 什么是线程?

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,

是进程中的实际运作单位。程序员可以通过它进行多处理器编程,

你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,

那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。

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

线程是进程的子集,一个进程可以有很多线程,

每条线程并行执行不同的任务。不同的进程使用不同的内存空间,

而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。

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

在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,

由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。

4) 用Runnable还是Thread?

这个问题是上题的后续,大家都知道我们可以通过继承Thread类或者调用Runnable接口来实现线程,

问题是,那个方法更好呢?什么情况下使用它?这个问题很容易回答,

如果你知道Java不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类,

当然是调用Runnable接口好了。

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

这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。

start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。

当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

6)sleep() 和 wait() 有什么区别? 

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-27 13:02:12

关于线程的面试题(1)的相关文章

一道线程的面试题

线程1循环3次,线程2循环6次,线程3循环9次,接着又回到线程1循环3次,线程2循环6次,线程3循环9次...如此循环50次 1 package ch03; 2 3 import java.util.concurrent.locks.Condition; 4 import java.util.concurrent.locks.Lock; 5 import java.util.concurrent.locks.ReentrantLock; 6 7 public class ConditionCom

一道线程同步面试题

package com.wsy.model; /** * 完成主线程循环10次,接着子线程循环5次,如此往复10次 * * @author wsy * */ public class TraditionalThreadCommunication { static Bussiness bussiness = new Bussiness(); public static void main(String[] args) { new Thread(new Runnable() { @Override

Java线程经典面试题

53道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并

2018 Java线程热门面试题,你知道多少?

面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:"面试官为什么会这样问?他希望听到什么答案?"然后针对性的准备和回答就行了,无他. 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发

关于线程的面试题

1:什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点.欲了解更多详细信息请点击这里. 2:线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享

jdk线程常见面试题

请编写一个多线程程序,实现两个线程,其中一个线程完成对某个对象int成员变量的增加操作,即每次加1,另一个线程完成对该对象成员变量的减操作,即每次减1,同时要保证该变量的值不会小于0,不会大于1,该变量的初始值为0. class Sample { private int number; public synchronized void increase() { while (0 != number) { try { this.wait(); } catch (InterruptedExcepti

记录一次回客科技有关线程的笔试题,三个线程加法和一个线程减法 ,延申的两个线程交替执行

今天去了回客科技 笔试了一波.很遗憾啊,脑袋有思路 但是还没到手写代码很熟练的程度,基本功不到位. 第一道:线程的题:三个线程 +1 一个线程 -1 运算 . 看到网上还有四个线程的,两个加法计算,两个减法运算.基本的思路都是一样的 ,注意看同步处理. 下面贴出代码实现: public class AddTest { private static int i; private static Object object = new Object(); public static void main

java线程 - 线程唤醒后并被执行时,是在上次阻塞的代码行重新往下执行,而不是从头开始执行

今天重新把昨晚的线程同步面试题做一遍时,发现实际情况运行下来时,线程一直不同步.后来经过不断测试,发现自己的一个误区. 之前一直以为,线程如果被唤醒后再次执行时,会从头开始运行这个线程,也就是重新运行Runnable中的run()方法: 而实际情况是,被唤醒并且被执行的线程是从上次阻塞的位置从下开始运行,也就是从wait()方法后开始执行. 所以判断是否进入某一线程的条件 是用while判断,而不是用If判断判断. 下面举例说明: 如果三个线程同步工作,第一个线程打印1,2,3,4,5   ,然

JAVA线程与多线程

去安卓面试的时候通常会问一些java问题,所以呢你可能觉得答问题时答案很蛋疼,今天来介绍一下线程. 先看几个概念: 线程:进程中负责程序执行的执行单元.一个进程中至少有一个线程. 多线程:解决多任务同时执行的需求,合理使用CPU资源.多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性. ● 线程 java中的线程 使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义.实例化和启动新线程. 一个Thread类实例只是一个对