每天五个java相关面试题(7)--线程篇
首先关于线程能够先看我之前这篇博文熟悉一下线程生命周期的图示以及文字说明
好開始了:
1.java 中有几种方法能够实现一个线程?
答:有两种实现方法。各自是继承 Thread类与实现Runnable接口。
1.线程类继承Thread类的语法:
(public) class 类名 extends Thread{
public void run(){//这里写线程的内容}}
2.线程类实现java.lang.Runnable类的语法:
(public) class 类名 implements Runnable{
public void run(){//这里写线程的内容}}
2.sleep() 和 wait() 有什么差别 ?
答:
sleep是线程类(Thread)的方法,导致此线程暂停运行指定时间,给运行机会给其他线程,可是监控状态依旧保持。到时后会自己主动恢复。调用sleep不会释放对象锁。
wait是Object类的方法。对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,仅仅有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
3.当一个线程进入一个对象的一个 synchronized 方法后,其他线程是否可进入此对象的其他方法 ?
答:
不能,一个对象的一个synchronized方法仅仅能由一个线程訪问。
4.请说出你所知道的线程同步的方法。
答:
wait():使一个线程处于等待状态。而且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态。是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程。而且不是按优先级。
Allnotity():唤醒全部处入等待状态的线程。注意并非给全部唤醒线程一个对象的锁。而是让它们竞争。
5.同步和异步有何异同。在什么情况下分别使用他们?举例说明。
答:
假设数据将在线程间共享。比如正在写的数据以后可能被还有一个线程读到。或者正在读的数据可能已经被还有一个线程写过了,那么这些数据就是共享数据。必须进行同步存取。
当应用程序在对象上调用了一个须要花费非常长时间来运行的方法,而且不希望让程序等待方法的返回时。就应该使用异步编程,在非常多情况下採用异步途径往往更有效率。
每天五个java相关面试题(7)--线程篇的更多相关文章
- 每天五个java相关面试题(8)--spring篇
首先呢,假设有从事前端开发的大神或者准备从事前端开发的小伙伴无意看到我这篇博客看到这段文字欢迎加我的QQ:[ 845415745 ].即将走入社会的菜鸟大学生有关于前端开发的职业问题想请教或者一起探讨 ...
- 每天五个java相关面试题(3)
1. Servlet的生命周期是什么? 答: 第一次请求: 构造方法->init() -> service() -> doGet()/doPost() 以后的请求:service() ...
- Java工程师笔试题整理[校招篇]
Java工程师笔试题整理[校招篇] 隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...
- JAVA技术专题综述之线程篇(1)
本文详细介绍JAVA技术专题综述之线程篇 编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield( ...
- java多线程面试题_线程并发面试题
1.什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个 ...
- 《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar.log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的 ...
- Java相关面试题总结+答案(五)
[异常] 74. throw 和 throws 的区别? throw 是真实抛出一个异常: throws 是声明可能会抛出一个异常. 75. final.finally.finalize 有什么区别? ...
- Java相关面试题总结+答案(九)
[MySQL] 164. 数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式:属性完全依赖于主键(满足第一范式的前提下),即任意一个字段只依赖 ...
- Java相关面试题总结
本文分为十九个模块,分别是: Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring Clou ...
随机推荐
- Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)
在Java中,实现定时任务有多种方式,本文介绍4种,Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式,Timer是最简单的,不需要任何框架 ...
- [转]专访企业QQ SaaS团队,谈企业级LNMP架构设计
FROM : http://www.csdn.net/article/2014-08-20/2821302-interview-tencent-b-qq-shuai-wang 对比IaaS和PaaS, ...
- verilog语法实例学习(5)
子电路模块 子电路模块的使用 一个verilog模块能够作为一个子电路包含在另一个模块中.采用这种方式,所有的模块都必须定义在一个文件中,那么verilog编译器就必须被告知每个模块的所属.模块例化的 ...
- QT入门系列(3):控制台输出QString
方式一:使用qDebug()输出 QString str("liyifeng");qDebug() << str;12输出结果:"liyifeng" ...
- tensorflow报错屏蔽的方法
之前是报这样的错: OpKernel ('op: "BestSplits" device_type: "CPU"') for unknown op: BestS ...
- [leetcode]Best Time to Buy and Sell Stock @ Python
原题地址:https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock/ 题意: Say you have an array for ...
- C# XmlTextWriter和XmlTextReader 读写XML文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- 日志收集以及分析:Splunk
转自:http://blog.163.com/guaiguai_family/blog/static/20078414520132181010189/ 写代码的人都知道日志很重要,机器不多的时候,查看 ...
- VS2008 解决Unable to copy file 对路径的访问被拒绝。
在VS2008 + WINDOWS 7 环境下重新生成解决方案时遇到以下问题 Unable to delete file "F:\XX.exe". 对路径"F:\XX.e ...
- (转)[Unity3D]BuildPipeline.PushAssetDependencies 打包依赖包,优化UI Prefab的资源引用加载(坑爹之处)
转自:http://blog.csdn.net/chiuan/article/details/39040421#reply 1:长话短说,UI Prefab中一般会交叉引用Atlas,那么打包时候我们 ...