java多线程

本文详细解析了多线程环境中线程间的同步与通信机制,包括同步的必要性、同步代码块、锁的使用、notify与interrupt方法的作用,以及join方法如何强夺执行权。此外还介绍了不同线程控制方法如sleep、wait与yield的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程间通信:

        两个线程操作同一份数据;

        两个线程对数据的操作不一样。

例:

运行该程序,结果为:

结果杂乱无章,分析一下:

线程2在执行System.out.println(r.name+"......"+r.sex); 时 ,线程1也在不断地执行,线程1把r.name设置为张三,把r.sex设置为女。线程2打印了当前Resource对象的name后,还没执行完打印,执行权被线程1夺走,线程1执行i++后把r.name设置为Jack,把r.sex设置为Femail。此时执行权又被线程2抢走,线程2接着执行打印,此时打印的r.sex就是Femail。

显然,这是没有进行同步导致的,所以要进行同步。

线程同步有两个条件:

1.有两个或两个以上线程

2.使用同一个锁

这里已经是多线程了,所以还要满足第二个条件,使用同一个锁。

同步的代码块是操作同一份数据的代码。

在synchronized()的参数表中,参数可以是任意一个对象,随便用哪个对象都行。同步时要用同一个锁,所以参数必须是同一个对象。

notify唤醒线程池中排在最前面的睡眠线程。并且只能唤醒使用同一个锁的线程。

当线程进入冻结状态,即线程持有锁,但不执行,可使用interrupt方法终止线程。

join方法强夺执行权:

当一个线程对象调用join方法后,会把执行权从正在占有者那里强夺过来,并一直执行到该线程结束才放掉执行权。

多用于需要临时加入一个线程,并需将其执行完。

线程的默认优先级是5。

可以自己设置线程的优先级:setPriority(n);

sleep(time),wait(),yield()的区别。

sleep(time):让线程睡眠,不释放执行权。带参数,表示睡眠时间,到时间后自动唤醒。

wait():让线程睡眠,释放执行权,进入线程池。必须通过notify唤醒。

yield();让线程放弃执行权,该方法不需要notify唤醒,只是临时放弃执行权。让该线程执行的频率小一点。

在游戏开发中,线程的使用是很频繁而且很重要的。所以掌握线程的各种作用及用法还是很重要的。

爬虫Python学习是指学习如何使用Python编程语言来进行网络爬取和数据提取的过程。Python是一种简单易学且功能强大的编程语言,因此被广泛用于爬虫开发。爬虫是指通过编写程序自动抓取网页上的信息,可以用于数据采集、数据分析、网站监测等多个领域。 对于想要学习爬虫的新手来说,Python是一个很好的入门语言。Python的语法简洁易懂,而且有丰富的第三方库和工具,如BeautifulSoup、Scrapy等,可以帮助开发者更轻松地进行网页解析和数据提取。此外,Python还有很多优秀的教程和学习资源可供选择,可以帮助新手快速入门并掌握爬虫技能。 如果你对Python编程有一定的基础,那么学习爬虫并不难。你可以通过观看教学视频、阅读教程、参与在线课程等方式来学习。网络上有很多免费和付费的学习资源可供选择,你可以根据自己的需求和学习风格选择适合自己的学习材料。 总之,学习爬虫Python需要一定的编程基础,但并不难。通过选择合适的学习资源和不断实践,你可以逐步掌握爬虫的技能,并在实际项目中应用它们。 #### 引用[.reference_title] - *1* *3* [如何自学Python爬虫? 零基础入门教程](https://blog.youkuaiyun.com/zihong523/article/details/122001612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [新手小白必看 Python爬虫学习路线全面指导](https://blog.youkuaiyun.com/weixin_67991858/article/details/128370135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值