Java多线程
一、线程
线程:可以并发执行多个任务。
二、线程创建方式
线程有两种创建方式。
方式一:直接继承Thread并重写run方法。需要注意,启动线程要调用start方法,start方法调用完毕后,线程纳入到线程调度中,线程调度会分配CPU时间片来运行该线程,当线程运行时会自动调用run方法。
第一种创建线程方式有两个不足:
1:由于要求继承Thread类,那么在将来项目中,就有可能出现继承冲突。
2:由于继承了Thread后需要重写run方法来定义线程要执行的任务,这就导致线程与任务有一个强耦合关系,当前线程就只能做run方法中定义的任务,其他事情做不了,这不利于线程的重用。
第二种创建线程的方式
定义一个类并实现Runnable接口来单独定义线程要执行的任务。
此外,还可以使用匿名内部类实现两种创建线程的方式。
三、相关API
Thread提供了一个静态方法static Thread currentThread(),该方法是用来获取运行这个方法的线程。 java中所有的代码都是由线程运行的,当需要获取某个线程时,只需使它执行上述方法即可。在哪个方法中定义代码,获取的就是运行该方法的线程。
Long getId();线程ID
String getName();获取名字
int getPriority();查看优先级
boolean isAlive();是否活着
boolean isDaemon();是否为守护线程
boolean isInterrupted();是否被中断了
四、操作线程
(1)线程的优先级
线程不能干涉线程调度的工作,即:线程不能决定时间片分配给哪个线程,也不能决定分配的具体次数。但是可以通过改变线程的优先级来获取更高的CPU时间片几率。线程优先级分为10个等级,对应数字为1-10,其中1最低,5默认,10最高。理论上优先级越高的线程,获取CPU时间片的次数多。
(2)线程的休眠
Thread提供了静态方法 static void sleep(long ms),该方法会将执行该方法的线程进入阻塞状态执行的毫秒数,在该毫秒数内不会进入就绪状态,醒来后并不能保证进入运行状态,只能保证进入就绪状态。
(3)线程的加入
void join(),线程提供了一个方法join,该方法允许一个线程在另一个线程上等待,直到它的工作都结束,才继续当前线程的后续工作。否则一直处于阻塞状态。
(4)线程的中断
可以使用Thread类中的interrupt()方法使线程离开run()方法。
(5)线程的同步
线程安全问题来源于两个线程同时存取单一对象的数据。
当一个方法被synchronized修饰后,该方法称为"同步方法",意思是说当前方法不能同时被两个以上的线程执行。多线程并发安全问题的本质就是多个线程发生了"抢"的
情况。有效缩小同步范围可以在保证并发安全的前提下提高并发效率。
同步块需要指定同步监视器(上锁的对象),若希望该同步块有效果,必须保证多个线程看到的锁对象相同,通常使用this即可。
互斥锁
synchronized修饰的是两段代码,但是锁对象相同。那么这两段代码就是互斥的。
<!--EndFragment-->
相关推荐
Java编程语言在面试中是必不可少的话题,特别是在...以上知识点是Java面试中常见的问题,掌握这些知识对于准备Java面试至关重要。面试时,候选人还需要展示问题解决能力、编程技巧以及对Java框架和其他相关技术的理解。
5. **多线程**:Java提供了丰富的多线程支持,面试中可能涉及线程的创建、同步机制(synchronized、Lock)、死锁、线程池以及并发工具类(ExecutorService、CountDownLatch、CyclicBarrier等)。 6. **JVM**:深入...
│ │ 9.JAVA并发编程之多线程并发同步业务场景与解决方案.wmv │ │ │ ├─10.微服务架构之Spring Cloud Eureka 场景分析与实战 │ │ 10.微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11....
java并发, java多线程知识点总结,最全思维导图,互联网大厂面试必备
### Java面试必备知识点详解 #### 一、Java虚拟机与平台无关性 **知识点1:Java虚拟机(JVM)** - **定义**:Java虚拟机(JVM)是一种能够执行Java字节码的虚拟机进程。Java源代码经过编译后会变成JVM能够识别并...
Java编程语言作为软件开发领域的主流语言之一,其面试题库涵盖了广泛的领域,包括基础语法、面向对象编程、集合框架、多线程、网络编程、异常处理、IO流、设计模式等。以下是一些核心知识点的详细说明: 1. **基础...
Java面试必备必知必会,这是每个Java开发者在求职或者职业发展中都需要面对的主题。Java面试通常涵盖以下几个核心领域:Java基础、集合框架、多线程并发以及虚拟机(JVM)知识。以下将对这些关键知识点进行详细阐述...
- 多线程:Java提供了Thread类和Runnable接口来实现并发执行,理解和掌握线程同步、锁机制是高级Java开发的关键。 - 集合框架:深入学习Set、List、Map接口及其实现类,如HashSet、ArrayList、LinkedList、HashMap...
Java面试必备文档涵盖了许多核心Java概念,以下是针对标题和描述中的关键知识点的详细说明: 1. **面向对象的特征** - **抽象**:抽象是将复杂问题简化,关注主要功能,忽略次要细节。在Java中,这通常通过接口和...
这份"【面试必备】JAVA 最常见面试题全解析 附 PDF"文档,正是为准备Java面试的开发者量身定制的资源,涵盖了Java的基础到高级知识点,旨在帮助你全面理解和掌握Java技术。 一、基础篇 1. Java语法:包括变量、数据...
03 10道Java面试必备的设计模式面试题!.pdf 04 10个Java经典的List面试题!.pdf 05 10个Java经典的Main方法面试题!.pdf 06 10个Java经典的String面试题!.pdf 07 15道经典的Tomcat面试题!.pdf 08 15道面试常问的...
4. **多线程**:Java提供了丰富的多线程支持,面试中会考察线程的创建、同步机制(synchronized、Lock)、死锁、线程池等。理解线程状态转换图,掌握线程安全问题的解决方案,如volatile、ThreadLocal等,有助于在...
7、 面试必备之乐观锁与悲观锁.pdf 8、 设计模式面试专题.pdf 9、 深入了解性能优化.pdf 10、 数据库.pdf 11、 最全Java面试题库-合并文档.pdf 12、 Activemq消息中间件面试专题.pdf 13、 Dubbo服务框架面试题及答案...
线程同步是多线程编程中的关键问题之一,Java提供了多种方法来实现线程间的同步: - **wait()**: 使当前线程进入等待状态,并释放对象锁。 - **sleep()**: 让当前线程暂停指定的时间,但不会释放对象锁。 - **...
Java编程语言作为全球最受欢迎的开发语言之一,其面试题库广泛且深入,涵盖了基础语法、面向对象、集合框架、多线程、网络编程、I/O流、数据库操作、设计模式等多个方面。这份资源显然为准备Java面试的程序员提供了...
内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...
6. **多线程与并发**:Java提供了丰富的多线程API,如Thread,Runnable,ExecutorService等。掌握同步机制(synchronized,Lock,volatile等)和并发工具类(Semaphore,CyclicBarrier,CountDownLatch等),是提升...
"Java面试必备208题.zip"这个压缩包文件提供了全面的面试准备资料,其中的"Java面试必备208题.pdf"涵盖了Java语言的各个方面,包括基础概念、面向对象、集合框架、多线程、IO流、网络编程、异常处理、JVM内存模型...
Java面试笔记 225道Java面试题JAVA面试基础知识点总结Java数据结构题 JAVA笔试面试WORD资料汇总(19个): 2014年最新Java笔试题及答案.docx 225道Java面试题 学会了Java面试随你问.docx Ant和Maven的作用是什么?两者...