首页 > 编程语言 > 详细

java 线程

时间:2020-11-05 17:52:36      阅读:24      评论:0      收藏:0      [点我收藏+]

进程与线程

进程: - 指一个内存中运行的应用软件,每个进程都有一个独立内存空间。

线程: - 进程中的执行路径,每个进程至少一个线程,共享一个内存空间。

线程调度

分时调度

  • 所有线程轮流使用CPU使用权,平均分配占用时间。

抢占式调度

  • 让优先级高的线程使用CPU,如果优先级相同随机选择,java使用这种模式。
  • CPU线程切换速度快,看上去像同时运行。不能提高运行速度,但是某些场合下增加了效率。

同步与异步

同步:排队执行,效率低安全

异步:同时执行,效率高不安全

并发与并行

并发:指两个或多个事件在同一个时间段内 发生。

并行:指两个或多个事件在同一个时刻发生(同时发生)。

Thread继承

每个线程都有自己的栈空间,公用一份堆内存。

继承Thread的子类需重写run方法

run方法不直接调用,而是调用start方法来启动。

Runnable实现

  1. 创建一个任务对象

  2. 创建一个线程,并为其分配一个任务

  3. 执行线程

与继承Thread相比的优势:

  • 通过创建任务,然后给线程分配的方式来实现多线程,更适合多个线程同时执行相同任务的情况;
  • 可避免单继承的局限性。(可多实现)
  • 任务与线程分离。提高程序健壮性
  • 后续的线程池技术,接受runnable类型的任务,不接受Thread类型的线程。

Thread类

.currentThread() 可以获取当前线程

.currentThread().getName()获取线程名字

Thread.sleep()指定时间休眠

线程阻塞:需要比较消耗时间的操作

线程中断:由线程自身决定。需做标记。

守护线程:用于守护‘用户线程’。当最后一个用户线程结束,所有守护线程自动结束。 .setDaemon(true)

线程安全与不安全

  • 同步代码块

synchronizez关键字

格式: synchronized(锁对象){

    }

看同一把锁

  • 同步方法

在方法的public后面加上synchronized关键字

  • 显式锁

同步代码块和同步方法都是隐式锁

Lock类 子类:ReenntrantLock

lock方法,unlock方法 自己锁和解锁

  • 公平锁与不公平锁

ReenntrantLock(fair:true)则创建了公平锁,谁排队先抢到谁占有

  • 线程死锁

  • 多线程通信

wait()睡眠方法,notify()唤醒方法

线程状态

Thread.state()

new

Runnable

Blocked

Waitting

TimedWaitting

Terminated

java 线程

原文:https://www.cnblogs.com/sanver/p/13932934.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!