public class Resources {
private String name;
private int count =1;
private boolean flag = false;
// wait 和 sleep的区别
//1、wait 可以指定时间也可以不指定
// sleep 必须指定时间
//2、再同步中时,对cpu的执行权和锁的处理不同
// wait 释放执行权,释放锁
// sleep 释放执行权,不释放锁
Lock lock = new ReentrantLock();//创建锁
//获取锁的监视对象
//Condition con = lock.newCondition();
//获取两个监视器,一个监视生产者,一个监视消费者
Condition set_con = lock.newCondition();
Condition qu_con = lock.newCondition();
public void set(String name){
lock.lock();//获取锁
try {
while (flag)
try {
set_con.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
this.name = name +count;
count++;
System.out.println(Thread.currentThread().getName()+"产出:"+name);
flag = true;
qu_con.signalAll();
}finally {
lock.unlock();//释放锁
}
}
public void qu(){
lock.lock();//获取锁
try {
while(!flag)
try {
qu_con.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"消费产品:"+name);
flag = false;
set_con.signalAll();
}finally {
lock.unlock();
}
}
}
相关推荐
c++ 学习之 多线程(六)lock_guard 和 unique_lock
c++ 学习之 多线程(六)lock_guard 和 unique_lock 前言 在使用mutex互斥量时,总会出现lock后没有unlock的情况,尤其是在判断分支中,某些被不常进入的分支忘记unlock,我们可以用RAII机制的模板类来解决忘记unlock的问题。 正文 1.std::lock_guard std::lock_gurad 是 C++11 中定义的模板类,定义如下: templ...
c++11 mutex ,lock 和 condition_variable 的使用用简介
C++11 并发指南三(std::mutex 详解) Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 头文件中,所以如果你需要使用 std::mutex,就必须包含 头文件。 头文件介绍 Mutex 系列类(四种) std::mutex,最基本的 Mutex 类。std::recursive_mu
QT快速配置MSVC2017编译环境(3分钟极简指南)
本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。
【Java多线程】3——Lock API控制多线程
在实际场景中,读操作不会改变数据,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。针对这种场景,Java 的并发包提供了读写锁,它表示两个锁,一个是读操作相关的锁,称为读锁,这是一种共享锁;一个是写相关的锁,称为写锁,这是一种排他锁,也叫独占锁、互斥锁。
VS Code 配置 LaTeX 写作环境完全指南
本文详细介绍了如何在 VS Code 中配置 LaTeX 写作环境,涵盖了从安装必备组件到高级功能的全面指南。首先,用户需要安装 LaTeX 发行版(如 TeX Live 或 MiKTeX)和 VS Code 插件(如 LaTeX Workshop)。接着,通过修改 settings.json 和 keybindings.json 文件,用户可以自定义编译、查看快捷键等基础配置。文章还提供了高效写作技巧,如使用代码片段和多文件项目管理,并介绍了高级功能如反向同步、公式预览和参考文献管理。此外,针对常见问题(
【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)
参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed
JAVA多线程——锁Lock
JAVA多线程——锁Lock Lock是一个接口,是在JUC包下的,Lock接口是控制多个线程对共享资源进行访问的工具。每次只能有一个线程拿到Lock对象的锁,线程开始访问共享资源前应先获得Lock对象。 不加锁,线程不安全 package com.peng.lock; import java.util.concurrent.locks.ReentrantLock; //测试lock锁 public class TestLock { public static void main(String[
闲人闲谈PS之一项目库存跨公司业务STO解决方案--SAP闲人的开篇
写这篇文章之前,简单说一下发这篇文章的动机。也算是在SAP这一行干了快10多年,在对一个模块了解越来越深入,越发觉自己的SAP知识浅薄。总的来说,和多数顾问一样,对于**标准功能**的应用业务场景理解还是存在或多或少的知识盲区。 因为一个偶然,看到SAP团子君的文章,分享了很多干货文章。这也是自己一直想做的时候,不管水平高低与否,分享本身就意味着提升。好了废话不多说,先在优快云上发一篇吧,困惑自己将近10年的问题的解决方案。 业务场景:在项目型企业中,通常会有这样的业务,母公司和客...
多线程之lock详解
多线程锁的使用,包括lock和ReadWriteLock
python 携程登陆_Python 学习练习之用户登录接口
目的:用python实现简单用户注册,登陆,加黑功能,放个流程图吧。以下内容仅为练习 执行流程:[root@zabbix login]# python user_login.pyusername:tompassword:123456Are you want to register ? [y/n]yRegister successful,Please relogin 


被折叠的 条评论
为什么被折叠?



