首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java一个死锁

此时如果把sleep()换成wait()会出现 线程1锁o1 Exception in thread "Thread-0" 线程2锁o2 线程2锁o1 java.lang.IllegalMonitorStateException...查看API发现 java.lang.IllegalMonitorStateException抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程...Java中用到的线程调度算法是抢占式。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。...由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)手动触发一次操作系统分配时间片的操作...Semaphore有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    自己一个天气查询应用

    【想法来源】 为了多锻炼自己,我开始这个小玩意,之前逛聚合数据这个网站的时候,发现他有个天气的API,我就想写个可以的小应用。所以花了一个晚上东平西凑总算搞出来了。...【正文】 1、rainyday.js 一开始本来想选一张好看点的图片做背景,但是总感觉少了什么,我想既然是天气,那就来个下雨效果吧,所以就用了这个;使用方法见官网吧,我也是按照那个来的,我就是调整了下参数...2、URI二次转码 天气api需要两个参数,一个是key,这个是开发中独有的,你们不用管,另一个就是cityname,一开始请求成功但是总是显示cityname出错查找不到城市,当时心想妹的这个城市都找不到...encodeURI(tianqiData.cityname)); (不用管变量名,这个是我从我源码中拷贝出来的)   3、input的outline 在使用背景图片后,再用input文本类型的标签,鼠标点击会出现一个亮框...【应用网址】 天气应用  有不好的地方可以跟我反馈

    90080

    JAVA一个冒泡排序「建议收藏」

    private static int [] a={12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; 5 static int temp=0;//一个临时存放点...相邻的两个数依次进行比较,如果先改变正序或反序,可以改变大小于 10 temp=a[j]; 11 a[j]=a[i];//在三行进行一个值的移动替换...System.out.println(a[i]); 18 } 19 } 20 } 冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值...如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数...,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量;   缺点:效率不高 (如果一个数组有n个数,那么排序完成后需要比较n*(n-1)/2次); 欢迎大家一起说出自己的想法

    48820

    Java一个简单的缓存操作类

    前言 使用缓存已经是开发中老生常谈的一件事了,常用专门处理缓存的工具比如Redis、MemCache等,但是有些时候可能需要一些简单的缓存处理,没必要用上这种专门的缓存工具,那么自己一个缓存类最合适不过了...首先是类定义和其属性定义,其中本类实例对象volatile进行修饰提高可见性,初始化缓存容量用于初始化ConcurrentHashMap缓存容器的大小,此大小根据实际应用场景进行优化。 ?...最后一个方法就是清理过期缓存,这里你可以选择启动一个监听线程实时地清理缓存,也可以选择在适当时机进行一次清理,比如我这里就是在存在put和get操作时固定或概率地清理缓存。 ?...三、并发测试 普通的实现测试这里就不展示了,肯定是没问题的,读者简单一些测试样例即可,这里主要展示一下并发测试,因为在实际情况中存在并发处理缓存情况,为了确保其正确性,所以并发测试是必须要做的,下面放出我的测试样例...四、拓展 该类只是简单的实现了缓存的过程,但是在实际应用中不见得能很好地表现,首先它的容量肯定有限,不能存太多缓存,因为使用的是JVM堆内的内存,其次其功能也较为简单,比如不支持LRU淘汰等,这个可以双链表

    1.7K20

    Java 一个植物大战僵尸简易版!

    一位读者Java语言开发了自己的植物大战僵尸游戏。虽然系统相对简单,但是麻雀虽小五脏俱全,对游戏开发感兴趣的小伙伴可以学习一下。...游戏设计 植物大战僵尸中有一个小游戏关卡,屏幕的正上方有一个滚轮机,会随机生成植物,玩家可以选中植物后自由选择草坪来进行安放。基于此游戏模式,我将该关卡抽取出来,单独做成了一个简易版的植物大战僵尸。...最早时候我的数据结构是数组,但在后续的编码中发现,对僵尸对象有很多的遍历以及增删操作,数组的增删操作是十分麻烦复杂的,所以我就换成了集合。...Java是一门面向对象的语言,万物皆对象,特征皆属性,行为皆方法。肉眼能看到的僵尸、植物、草坪都是对象,对象的特性比如血量、移动速度都是属性,对象的行为比如移动、攻击、死亡都是方法。...这里需要注意的是,Java中解析音乐的API只支持WAV格式的文件,文件格式的转换大多数音乐播放器都可以做到。 后续优化 1.植物种类的扩充及对应功能的实现 比如杀伤力最大的玉米加农炮。

    89730

    python查询天气

    一个网络请求,一个json解析; 创建一个city.json的文件; 使用天气API: http://t.weather.sojson.com/api/weather/city/ 通过实验、实践等证明提出的方法是有效的...代码清单 1 import jsonimport requests#api地址(一套明确定义的各种软件组件之间的通信方法,例如如下的天气API,最后面加入城市代码就可以得到天气)url = 'http:...//t.weather.sojson.com/api/weather/city/'#输入城市中文city = input("请输入你要查询的城市:")#读取json文件(以二进制只读方式打开一个文件)f...:", d["data"]["forecast"][0]["type"]) 3 结语 针对python查询天气的问题,提出导入requests和json模块,使用天气API加城市代码的方法,通过代码运行实验...,证明该方法是有效的,未来可以继续研究添加此天气情况下的注意事项。

    24350

    Java 一个植物大战僵尸简易版!

    游戏设计 植物大战僵尸中有一个小游戏关卡,屏幕的正上方有一个滚轮机,会随机生成植物,玩家可以选中植物后自由选择草坪来进行安放。 基于此游戏模式,我将该关卡抽取出来,单独做成了一个简易版的植物大战僵尸。...300==0) { // 满足条件就调用随机生成僵尸方法,并将生成的僵尸加入到僵尸的集合中 zombies.add(nextOneZombie()); } } 最早时候我的数据结构是数组...追击的方式当然是追前一个植物卡牌,但当第一个植物卡牌被选中放置到草地上后,那该如何追击呢?...Java是一门面向对象的语言,万物皆对象,特征皆属性,行为皆方法。 肉眼能看到的僵尸、植物、草坪都是对象,对象的特性比如血量、移动速度都是属性,对象的行为比如移动、攻击、死亡都是方法。...这里需要注意的是,Java中解析音乐的API只支持WAV格式的文件,文件格式的转换大多数音乐播放器都可以做到。 后续优化 1.植物种类的扩充及对应功能的实现 比如杀伤力最大的玉米加农炮。

    72120

    Java语言,一个植物大战僵尸简易版!

    小灰的一位读者,Java语言开发了自己的植物大战僵尸游戏。...zombieEnterTime%300==0) { // 满足条件就调用随机生成僵尸方法,并将生成的僵尸加入到僵尸的集合中 zombies.add(nextOneZombie()); } } 最早时候我的数据结构是数组...追击的方式当然是追前一个植物卡牌,但当第一个植物卡牌被选中放置到草地上后,那该如何追击呢?...Java是一门面向对象的语言,万物皆对象,特征皆属性,行为皆方法。肉眼能看到的僵尸、植物、草坪都是对象,对象的特性比如血量、移动速度都是属性,对象的行为比如移动、攻击、死亡都是方法。...这里需要注意的是,Java中解析音乐的API只支持WAV格式的文件,文件格式的转换大多数音乐播放器都可以做到。 后续优化 1.植物种类的扩充及对应功能的实现 比如杀伤力最大的玉米加农炮。

    54410

    Java语言,一个植物大战僵尸简易版!

    小灰的一位读者,Java语言开发了自己的植物大战僵尸游戏。...zombieEnterTime%300==0) { // 满足条件就调用随机生成僵尸方法,并将生成的僵尸加入到僵尸的集合中 zombies.add(nextOneZombie()); } } 最早时候我的数据结构是数组...追击的方式当然是追前一个植物卡牌,但当第一个植物卡牌被选中放置到草地上后,那该如何追击呢?...Java是一门面向对象的语言,万物皆对象,特征皆属性,行为皆方法。肉眼能看到的僵尸、植物、草坪都是对象,对象的特性比如血量、移动速度都是属性,对象的行为比如移动、攻击、死亡都是方法。...这里需要注意的是,Java中解析音乐的API只支持WAV格式的文件,文件格式的转换大多数音乐播放器都可以做到。 后续优化 1.植物种类的扩充及对应功能的实现 比如杀伤力最大的玉米加农炮。

    61610

    python一个翻译软件

    二、解决UntranslatedText只能配置一个问题我试用了可以翻译,但是这里UntranslatedText只支持一个单词。...官方给的建议是这个用来标记不希望被翻译的文本内容,如句子中的特殊符号、人名、地名等;每次请求只支持配置一个不被翻译的单词;仅支持配置人名、地名等名词,不要配置动词或短语,否则会影响翻译结果。...我们一个办法来绕过这个限制。假设我们把原来要翻译的文本你好啊Mario,谢谢你Alice,再见Jobs我们现在不想对着里面的Mario、Alice和Jobs进行翻译。...,每个接口都会对应一个request对象 req = models.TextTranslateRequest() params = { "SourceText": "Hello...0, "UntranslatedText": "Mario" } req.from_json_string(json.dumps(params)) # 返回的resp是一个

    25810

    5秒Java一个快速排序算法?这个我在行

    3、 对这两个子数组进行递归排序下面是一个由FuncGPT(慧函数)生成的Java实现快速排序的基本示例:// 类名:QuickSort// 函数名:quickSort// 函数功能:使用快速排序算法对数组进行排序...以上就是通过FuncGPT(慧函数)Java一个快速排序算法的基本流程。...我们将以上代码放到可以媲美ChatGPT—4的文心一言中,得到的评价是:这个Java代码实现了一个结构清晰、易于理解和使用的快速排序算法(详情见截图)。...图片作为全栈式全自动软件开发工具飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。...生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。

    23710
    领券