当前位置: 首页 > news >正文

大气企业网站源码php关键词排名优化公司哪家好

大气企业网站源码php,关键词排名优化公司哪家好,微信网站搭建价格,谈谈对电子商务网站建设与管理进程和线程 进程即程序的一次执行过程,各个进程之间是独立的。线程是更小的单位,一次进程中,可能会有多个线程,可能会相互影响,各个线程有自己的程序计数器,虚拟机栈和本地方法栈,同时共同使用…

进程和线程

进程即程序的一次执行过程,各个进程之间是独立的。线程是更小的单位,一次进程中,可能会有多个线程,可能会相互影响,各个线程有自己的程序计数器,虚拟机栈和本地方法栈,同时共同使用堆和方法区资源

线程的生命周期和状态

NEW:线程被创建出来,但是未调用start()方法

RUNNABLE:线程调用了start()方法

BLOCKED:等待锁释放

WAITING:线程调用Object.wait()、Thread.join()或LockSupport.park()方法时,进入等待状态

TIME_WAITING:线程调用Thread.sleep()、Object.wait()或Thread.join()方法时,带有超时时间参数,进入计时等待状态。

TERMINATED:当线程执行完它的任务或发生异常时,它进入终止状态。

线程上下文切换

线程执行过程时有自己的运行状态(称作上下文),如程序计数器等信息,退出cpu状态,加载另一个cpu的上下文。

发生切换时机

主动让出cpu,调用sleep()或wait()方法

时间片用完

被终止或结束运行

死锁

什么是死锁

多个线程同时阻塞,互相等待对象释放资源

死锁产生条件

互斥条件:同一个资源在同一时刻只能被一个线程占有

不可剥夺条件:一个线程持有资源时,不能被其他线程剥夺

请求与保持条件:一个线程因请求资源阻塞时,会继续占用已有的资源

循环等待条件:若干线程形成首尾相接的循环等待关系

如果避免死锁

破坏不可剥夺条件:线程可以剥夺其他线程占用的资源

破坏请求与保持条件:一次性申请所有资源

破坏循环等待条件:按序申请资源,反序释放资源

wait和sleep方法

sleep()方法不会释放对象锁。当一个线程调用sleep()方法时,它会让当前线程休眠一段时间,但是它并不会释放对象锁。其他线程仍然无法获取该对象的锁。

wait()方法会释放对象锁。当一个线程调用wait()方法时,它会让当前线程等待,并释放对象锁,以便其他线程可以获取该对象的锁并执行。

sleep是Thread类的方法,而wait是Objec类的方法.

代码示例

public static void main(String[] args) {final Object lock = new Object();Thread waitingThread = new Thread(() -> {synchronized (lock) {System.out.println(LocalTime.now() +  " " + Thread.currentThread().getName()   +  " Waiting thread is running");try {lock.wait();     // 线程等待,释放对象锁} catch (InterruptedException e) {e.printStackTrace();}System.out.println(LocalTime.now() +  " " + Thread.currentThread().getName()   +  " Waiting thread is done");}});Thread notifyingThread = new Thread(() -> {synchronized (lock) {try {Thread.sleep(1000);   //休眠1s} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(LocalTime.now() +  " " + Thread.currentThread().getName()   +  " Notifying thread is running");lock.notify(); // 唤醒等待中的线程System.out.println(LocalTime.now() +  " " + Thread.currentThread().getName()   +  " Notifying thread is done");}});waitingThread.start();notifyingThread.start();}

 输出结果

15:36:44.350 Thread-0 Waiting thread is running
15:36:45.352 Thread-1 Notifying thread is running
15:36:45.352 Thread-1 Notifying thread is done
15:36:45.352 Thread-0 Waiting thread is done

Synchronized

原理

每个对象都有一个与之关联的监视器(monitor),当一个线程进入一个对象的 synchronized 方法或代码块时,它会尝试获取这个对象的内置锁。如果这个锁已经被其他线程获取了,那么当前线程将被阻塞,直到获取到这个锁为止。

当一个线程获取到对象的内置锁后,它就可以执行 synchronized 方法或代码块中的操作。在执行完这些操作后,线程会释放对象的内置锁,这样其他线程就有机会获取到这个锁,

ReentrantLock

原理

ReentrantLock 是通过 lock() 和 unlock() 方法来实现锁的获取和释放,支持可重入特性和公平性选择,同时还提供了条件变量的支持。其底层实现是基于 AQS 框架的,通过这些机制来实现多线程的同步和互斥操作。

Synchronized和ReentrantLock比较

相同点:可重入,

区别:synchronized依赖JVM,而ReetranLock依赖API;

ReentrantLock实现等待可中断,公平锁,选择通知

http://www.yidumall.com/news/27902.html

相关文章:

  • 网站后台查询软件网络推广策划方案模板
  • 公安厅门户网站建设方案网站seo价格
  • 青海高端网站建设公司西安seo服务商
  • 西安网站建设流程seo关键词排名优化报价
  • 律师网站深圳网站设计包头网站建设推广
  • 风铃网站代做湖北荆门今日头条
  • 办公空间设计说明200字惠州seo代理商
  • 珠海动态网站制作推广seo平台
  • 做模具做什么网站专业网页设计和网站制作公司
  • 香港集运网站怎么做seo排名软件哪个好用
  • 用wordpress做直播平台怎样优化关键词到首页
  • 怎么创一个网站企业推广app
  • 曹县网站建设公司自己做网站
  • dede旅游网站seo手机关键词排行推广
  • 有名的软件开发公司天津做优化好的公司
  • 柳州网站seo营销方式和手段
  • 普陀网站建设哪家便宜百度推广话术全流程
  • 苏州网站开发公司cms系统
  • 全国网站建设哪家专业成都最好的网站推广优化公司
  • c 如何拖控件做网站西安seo专员
  • 一条 wordpress快速优化工具
  • aspx高性能网站建设情感式软文广告
  • 免费的微网站清远今日头条新闻
  • 盐山做网站重庆好的seo平台
  • 注册网站要多少钱网站建设开发外包公司
  • 成都营销型网站b2b是什么意思
  • 丰台路网站建设网络推广方法大全
  • wordpress a购物车插件专业整站优化
  • wordpress清除缓存天津网站建设优化
  • 网站更换模板互联网推广员是做什么的