Java基础知识12-多线程4

配图

同步

当两个或多个想成需要访问共享资源时,他们需要以某种方式确保每次只有一个线程使用资源。是先这一目的的过程称为同步。

同步的关键是监视器的概念,监视器是所有用作互斥锁的对象。在给定时刻,只有一个线程可以拥有监视器。当线程取得锁时,也就是进入了监视器。其他所有企图进入加锁监视器的线程都会被挂起,直到第一个线程退出监视器。也就是说,这些等待的其他线程在等待监视器。

可以使用两种方法同步代码。这两种方法都要用到synchronized关键字。

使用同步方法

在Java中进行同步很容易,因为所有对象都有与他们自身关联的隐式监视器。只需要使用synchronized关键字修饰过的方法。

public synchronized void methodName() {
        
}

使用同步代码块

synchronized (objRef){
            
}

objRef可以使用任意对象。

同步方法与同步代码块的区别

同步代码块的锁是任意对象。
同步方法的锁是this。

synchronized 关键字可以加载静态方法上,那么加载静态方法上他的锁对象是当前类的class文件。
因为静态方法是随着类的加载而加载。

总结

进程:正在执行的应用程序
线程:进程的执行单元,执行路径
单线程:一个应用程序只有一条执行路径
多线程:一个应用程序有多条执行路径

Java程序的运行原理以及jvm的启动是多线程吗?
A:Java命令去启动jvm,jvm会启动一个进程,该进程会启动一个主线程。
B:jvm的启动是多线程的,因为它最低有两个线程启动,主线程和垃圾回收线程。

多线程的实现方案
A:继承Thread类
B:实现Runnable接口

线程的调度和优先级问题
A:线程调度
a:分时调度
b:抢占式调度
B:获取和设置线程优先级问题
a:默认是5
b:范围是1-10

线程的控制方法
A:休眠线程
B:加入线程
C:礼让线程
D:后台线程
E:终止线程

线程的生命周期
A:新建
B:就绪
C:运行
D:阻塞
E:死亡

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 10,255评论 12 45
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,114评论 1 18
  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 12,080评论 3 87
  • 一、进程和线程 进程 进程就是一个执行中的程序实例,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。...
    阿敏其人阅读 7,414评论 0 13
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,206评论 1 15

友情链接更多精彩内容