Java高级部分之线程重点总结(上)

2016年3月31日19:39:37

Java高级部分之线程重点总结(上)

作者:数据分析玩家

1、简述线程的概念

线程是一个程序里的不同执行路径,即线程就是不同的执行路径

2、简述多线程的概念

以前所编写的程序,每个程序都只有一个入口、一个出口以及一个顺序执行的序列,在程序执行过程中的任何指定时刻,都只有一个单独的执行点。

事实上,在单个程序的内部是可以在同一时刻进行多种运算的,这就是所谓的多线程

3、简述多线程的优点

1>多线程打破了传统意义上的编程模式:按照传统的理解,程序中的代码应该是一行一行的执行,上一行代码若没有执行完毕,下一行代码就不能执行,而多线程是若上一行代码没有执行完毕,下一行代码就可以执行,即两行代码可以交替的占用CPU来进行执行

2>多线程编程简单、效率高,能实现资源和数据的共享

3>因为多线程的特点,所以多线程适合开发服务程序:如web服务、聊天服务等

4、如何理解多线程中的同时执行

所谓同时执行就是交替的执行,也就是一个程序的流程在某一个地方单独的开辟了一个分支,两个分支不停的占用cpu来进行执行

5、简述cpu与多线程的关系

1>从本质上讲,cpu不可能在同一时间执行多个线程,只是因为cpu执行速度很快,所以看似cpu在执行多个线程,事实上是多个线程不停的占用cpu来交替的进行执行,所谓cpu很快指的是cpu在单个时间切换的速度很快

2>在多线程中,尽管cpu在多个线程之间来回的进行切换,但对于某个线程而言,虽然代码是断断续续的从上向下进行执行,但是代码仍然是按照顺序的从上向下进行执行,多个线程代码彼此之间的相互打乱只是一种假象

3>Java虚拟机当中有一个线程调度器,它里面有相应的方法控制哪个线程先执行,哪个线程后执行,但是具体是哪个线程先执行,哪个线程后执行则是由操作系统进行控制的,Java虚拟机不能够直接越过操作系统对硬件cpu进行控制,因此在实际开发过程中不能够依赖线程优先级来决定线程运行的次序

6、简述创建线程的两种方式

1>继承Thread类,并重写run方法

2>实现Runnable接口,并实现run方法

7、简述创建线程两种方式的比较(应用层)

1>若处理的是不同的资源,两种创建线程的方式均可

2>若处理的是相同的资源(如售票),最好通过实现Runnable接口的方式创建多线程:通过实现Runnable接口的方式创建多线程,只需要定义一个类对象就可以造出很多个线程,并且可以实现资源的共享,若通过继承Thread类的方式创建多线程,必须借助static等语法知识才能实现资源的共享

3>综上:几乎所有的多线程都是通过实现Runnable接口的方式创建的,这种方式具有无可比拟的优势

8、简述创建线程两种方式语法上的异同点

1>一个是重写父类中的run方法,一个是实现接口中的run方法,但最终都是通过Thread类中的start()方法调用相应的run()方法

2>run方法原本是Runnable接口中特有的,但是Thread类中也有;start方式是Thread类中特有的,Runnable接口没有,因为接口中的方法不能有方法体

9、简述多线程中的三个注意事项

1>start关键字具有两层含义:向下开辟一个新的线程,并执行本线程所对应的run()方法。

aa.start()会自动调用相应的run()方法,若直接写aa.run()就是传统的调用,不能开辟一个新的线程,只有写的是aa.start()才能开辟一个新的线程

2>执行完aa.start()之后并不表示aa对象所对应的线程立即得到执行,aa.start()执行完之后只是表明aa对象对应的线程具有了可以被cpu执行的资格,但由于想抢占cpu执行的线程很多,cpu并不一定会立即去执行aa对象所对应的线程,此时aa对象对应的线程将处于阻塞状态

一个线程对应三种不同的状态:阻塞状态、就绪状态、运行状态

3>一个Thread对象只能开辟一个线程

10、简述多线程中常用的方法(上)

1>start():向下开辟一个新的线程,并自动调用本线程所对应的run方法

2>currentThread():返回当前线程的引用

3>setName():通过引用设置当前线程的名字

4>getName():通过引用返回当前线程名字

5>sleep():暂停当前运行中的线程,使之进入到阻塞状态,待经过指定的延迟时间后在醒来进入到就绪状态,不是运行状态

                  

                                                                                                                                                                                                                                                                    2016年3月31日20:51:26

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java高级面试突围课是一门针对准备Java高级面试的人群而开设的课程。在这门课程中,学员们将针对Java高级概念和技术进行系统的学习和训练,以便在面试中能有更好的表现。 本课程的内容主要包括以下几个方面: 1. Java核心知识:学员将会系统地学习Java核心概念,包括面向对象编程、集合框架、多线程编程等。这些知识是Java开发的基础,也是面试中常被问到的重点。 2. Java进阶技术:除了基础知识外,学员还将学习一些Java高级技术,如设计模式、JVM原理和优化、垃圾回收机制等。这些技术能够帮助学员在面试中展示自己的深度和广度。 3. 面试技巧和模拟面试:为了帮助学员更好地应对实际面试的考察,本课程还将提供一些面试技巧和经验分享,并进行模拟面试。通过模拟面试,学员可以熟悉面试的流程和常见问题,提高自己的应答能力。 4. 面试题解析和答题思路:除了传授知识和技巧,本课程还会对一些常见的面试题进行解析,并提供一些答题的思路和方法。这将帮助学员更好地理解和回答面试官的问题,提升面试的成功率。 整个课程将采用理论与实践相结合的教学方法,使学员能够通过系统的学习和实践来提高自己的面试水平。通过这门课程的学习,学员们将能够更加自信地应对Java高级面试的挑战,提升自己的竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只懒得睁眼的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值