本文主要是介绍Java多线程基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基础
进程
- 一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。
- 一个进程一直运行,直到所有的非守候线程都结束运行后才能结束。
线程的生命周期
-
新建状态
- 一个新产生的线程从新状态开始了它的生命周期。它保持这个状态直到程序start这个线程。
-
就绪状态
- 当一个线程等待另外一个线程执行一个任务的时候,该线程就进入就绪状态。当另一个线程给就绪状态的线程发送信号时,该线程才重新切换到运行状态。
-
运行状态
- 当一个新状态的线程被start以后,线程就变成可运行状态,一个线程在此状态下被认为是开始执行其任务。
-
阻塞状态(休眠状态)
- 由于一个线程的时间片用完了,该线程从运行状态进入休眠状态。当时间间隔到期或者等待的事件发生了,该状态的线程切换到运行状态。
-
死亡状态(终止状态)
- 一个运行状态的线程完成任务或者其他终止条件发生,该线程就切换到终止状态。
创建线程三种方法
-
实现Runnable接口(最简单)
-
继承Thread类本身
-
通过Callable 和 Future 创建线程
常见线程方法
-
sleep
-
join
-
setPriority
-
yield
-
setDaemon
同步问题
-
多个线程同时修改一个数据的问题
-
又称为Concurrency(并发)问题
-
解决问题
-
synchronized 语句块
- 当前线程独占对象,直到释放占用
- 被 synchronized 修饰的,称为线程安全的类
-
Lock
-
图
常见线程安全类
-
Map
-
字符串
-
StringBuilder
-
StringBuffer
-
List
多线程编程
多线程使用
- 有效利用多线程的关键是理解程序是并发执行而不是串行执行的。例如:程序中有两个子系统需要并发执行,这时候就需要利用多线程编程。
- 通过对多线程的使用,可以编写出非常高效的程序。不过请注意,如果你创建太多的线程,程序执行的效率实际上是降低了,而不是提升了。
- 请记住,上下文的切换开销也很重要,如果你创建了太多的线程,CPU花费在上下文的切换的时间将多于执行程序的时间。
这篇关于Java多线程基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!