前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道面试题 | day04

每天一道面试题 | day04

作者头像
剑走天涯
发布2019-09-12 16:56:05
2670
发布2019-09-12 16:56:05
举报
文章被收录于专栏:Java LifeJava Life

1.编写多线程程序的几种实现方式(换个问法:创建多线程的方式)?

(1)通过继承Thread类

(2)通过实现Runnable接口(推荐使用,因为Java中是单继承,一个类只有一个父类,若继承了Thread类,就无法在继承其它类,显然实现Runnable接口更为灵活)

(3)通过实现Callable接口(Java 5之后)

2.解决多线程安全问题的几种方式?
(1)同步代码块

在代码块声明上 加上synchronized

synchronized (锁对象) {

可能会产生线程安全问题的代码

}

同步代码块中的锁对象可以是任意的对象;但多个线程时,要使用同一个锁对象才能够保证线程安全。

(2)同步方法

在方法声明上加上synchronized

public synchronized void method(){

可能会产生线程安全问题的代码

}

同步方法中的锁对象是 this

静态同步方法: 在方法声明上加上static synchronized

静态同步方法中的锁对象是 类名.class

(3)同步锁

Lock接口提供了与synchronized关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。

写在后面

本文章将以“指导面试,智取Offer”为宗旨,为广大Java开发求职者扫清面试道路上的障碍,成为面试官眼中的精英,朋友圈里的大神。在面试场上“胸有成竹”,坦然面对每个面试官的“拷问”,做到进可攻“项目经理、项目总监”等高级职务,视之为翘首可及;退可守“Java工程师、Java测试工程师”等职务,视之为探囊取物。无论进退、皆可立于不败之地。

The end

文字 / 々仗剑走天涯

配图 / 々仗剑走天涯

排版 / 々仗剑走天涯

Java Life

与你同在

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java Life 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档