金三银四跳槽季(四)多线程

24人阅读 评论(0) 收藏 举报
分类:

1、 wait和sleep的区别

sleep()方法是属于Thread类中的,而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。所以在调用sleep()方法的过程中,线程不会释放对象锁。
③调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

2、Volatile和Synchronized四个不同点:

① 粒度不同,前者针对变量 ,后者锁对象和类
syn阻塞,volatile线程不阻塞
syn保证三大特性,volatile不保证原子性
syn编译器优化,volatile不优化 volatile具备两种特性:

1.保证此变量对所有线程的可见性,指一条线程修改了这个变量的值,新值对于其他线程来说是可见的,但并不是多线程安全的。
2.禁止指令重排序优化。

Volatile如何保证内存可见性:

1.当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存。
2.当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效。线程接下来将从主内存中读取共享变量。

  • 同步:就是一个任务的完成需要依赖另外一个任务,只有等待被依赖的任务完成后,依赖任务才能完成。
  • 异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,只要自己任务完成了就算完成了,被>依赖的任务是否完成会通知回来。(异步的特点就是通知)。 打电话和发短信来比喻同步和异步操作。
  • 阻塞:CPU停下来等一个慢的操作完成以后,才会接着完成其他的工作。
  • 非阻塞:非阻塞就是在这个慢的执行时,CPU去做其他工作,等这个慢的完成后,CPU才会接着完成后续的操作。
    非阻塞会造成线程切换增加,增加CPU的使用时间能不能补偿系统的切换成本需要考虑。

3、线程池的作用:

在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程


  • 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

  • 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

  • 第三:提高线程的可管理性。

常用线程池:ExecutorService 是主要的实现类,其中常用的有 Executors.newSingleThreadPool(),newFixedThreadPool(),newcachedTheadPool(),newScheduledThreadPool()

4、notify和notifyAll区别

他们的作用都是通知处于等待该对象的线程。

  • notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。

  • notify是通知其中一个线程,不会通知所有的线程

查看评论

详解程序员如何备战金三银四跳槽季

每到年底,想起金三银四跳槽季,心里就痒痒:那么多高薪机会,我要不要看看?然而,你真的知道如何有效为跳槽做准备吗?...
  • foruok
  • foruok
  • 2018-01-17 07:05:03
  • 1612

Java高级程序员面试大纲——备战金三银四跳槽季

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的...
  • qq_41790443
  • qq_41790443
  • 2018-03-30 19:42:49
  • 394

金三银四跳槽季,Java面试大纲

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹...
  • xfg0218
  • xfg0218
  • 2018-03-19 11:42:43
  • 327

Java程序员金三银四求职季,这些多线程面试题你会吗?

多线程是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是作为一个程序员仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。1. 进程和线程之间有...
  • bucai1126
  • bucai1126
  • 2018-03-04 17:43:05
  • 175

金三银四跳槽季,教你怎么把心仪的offer轻松拿到手

今天主要涉及到的是 HR 在面试时有哪些套路,这样可以见招拆招,斩获 offer!最近很多学员来问我,面试官经常会问到你在参与项目中的亮点或者技术上的亮点,很多学员不知道该怎么回答,然后就被刷下来了。...
  • leonardc
  • leonardc
  • 2018-04-12 19:05:34
  • 43

金三银四,Android高级开发面试题目,帮你助力

最近金三银四,相信不少朋友都在跃跃欲动,看看市场机会,连夜整理了一波Android高级开发面试题目,帮你助力!Java基础1、内部类的作用内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外...
  • Ch97CKd
  • Ch97CKd
  • 2018-03-05 00:00:00
  • 406

金三银四如何找工作?阿里、京东、美团内推题送给还在迷茫的朋友

从事Java开发工作十二年总结跳槽,对IT人来说绝对不是个陌生的词汇,几乎所有人都身体力行过。首先我要强调一点,跳槽并没有坏处,但是频繁的跳槽就不好了。在工作的前4年,必须跳槽,而且鼓励跳槽(建议经历...
  • Gupaoxueyuan
  • Gupaoxueyuan
  • 2018-03-01 14:03:34
  • 275

金三银四Java面试前准备

  感谢您参加我们的面试:   以下是我们总结一些面试前准备和技术参考题,希望对你有所帮助。   首先,你需要先准备下工作相关的自我介绍,包括以下内容:   1.几年Java开发经验,大概概括下...
  • hang1995
  • hang1995
  • 2018-03-15 15:32:15
  • 102

金三银四了,程序员你还在为面试发愁吗?

前言15年毕业到现在也三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易。但是要特...
  • leonardc
  • leonardc
  • 2018-03-15 16:48:14
  • 191

Java面试宝典2013最新版

  • 2018年01月29日 11:51
  • 2.1MB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 170万+
    积分: 1万+
    排名: 789
    我的家园
    GitHub