通知设置 新通知
打击整治网络谣言 长春朝阳公安在行动
公告 • micform-admin 发表了文章 • 0 个评论 • 48 次浏览 • 2024-02-26 17:02
一、什么是网络谣言
网络谣言是指通过网络介质(例如微博、国外网站、网络论坛、社交网站、聊天软件等)传播的没有事实根据的传闻,其主要涉及突发事件、公共卫生、食品药品安全领域、政治人物 、颠覆传统、离经叛道领域等主要内容。
二、网络谣言的具体表现形式
例如一些自媒体从业人员假借社会热点事件编造传播网络谣言,有的甚至公然在网上自编自导自演、无中生有炮制虚假案事件,以此吸粉引流、非法牟利;一些网站企业落实网络安全主体责任不到位,放任网络谣言在其所属平台大量传播扩散,造成恶劣社会影响;一些“网络水军”团伙频繁插手、恶意炒作相关案事件,通过编造传播虚假信息“造热点”!“蹭热度"“带节奏”从而获利等形式。
三、网络谣言的危害性
1、侵犯个人权利
网络谣言侵犯个人、法人或其他组织的名誉权、荣誉权等。
2、社会秩序与信任体系受损
网络谣言能够严重干扰民众的正常生活,并破坏社会信任体系,损害党和政府形象。
3、公共安全和公众利益受威胁
谣言的传播可能导致公共安全问题和损害公众利益。
4、扰乱思想和行为
网络谣言能够扰乱人们的思想、心理和行为,导致人们在面对不实的谣言时表现出不适当的反应盲从。
5、对政府决策的影响
在紧急情况下,网络谣言可能会阻碍政府的应急处置,使得政府疲于应付,增加危机处理的难度。
6、容易被境外势力利用
网络谣言容易被人利用,煽动网民情绪影响民众对政府的信任,甚至可能被用作政治手段。
7、对政府决策的影响
在紧急情况下,网络谣言可能会阻碍政府的应急处置,使得政府疲于应付,增加危机处理的难度。
8、容易被境外势力利用
网络谣言容易被人利用,煽动网民情绪影响民众对政府的信任,甚至可能被用作政治手段。
四、恶意传播网络谣言承担的法律后果
根据国家相关法律的规定,行为人在网络制造和传播谣言的,依据情节承担法律责任,不构成犯罪的进行治安管理处罚,构成犯罪的追究刑事责任,造成他人人身安全、精神损害或者财产损失的,可以依法向人民法院提起民事诉讼,追究造谣者的相关法律责任和赔偿责任。
相关法律依据
《中华人民共和国民法典》第一千一百九十四条 【网络侵权责任】网络用户网络服务提供者利用网络侵害他人民事权益的,应当承担侵权责任。法律另有规定的,依照其规定。
《中华人民共和国治安管理处罚法》第二十五条:有下列行为之一的,处五日以上十日以下拘留,可以并处五百元以下罚款,情节较轻的,处五日以下拘留或者五百元以下罚款:
1、写恐吓信或者以其他方法威胁他人人身安全的;
2、公然侮辱他人或者捏造事实诽谤他人的;
3、捏造事实诬告陷害他人,企图使他人受到刑事追究或者受到治安管理处罚的,
4、对证人及其近亲属进行威胁、侮辱、殴打或者打击报复的;
5、多次发送淫秽、侮辱、恐吓或者其他信息,干扰他人正常生活的;
6、偷窥、偷照、窃听、散布他人隐私的。
《中华人民共和国刑法》第一百零五条:以造谣、诽谤或者其他方式煽动颠覆国家政权、推翻社会主义制度的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利;首要分子或者罪行重大的,处五年以上有期徒刑。
《中华人民共和国刑法》第二百二十一条:捏造并散布虚伪事实,损害他人的商业信誉、商品声誉,给他人造成重大损失或者有其他严重情节的,处二年以下有期徒刑或者拘役,并处或者单处罚金。
《中华人民共和国刑法》第二百四十六条:以暴力或者其他方法公然侮辱他人或者捏造事实诽谤他人,情节严重的,处三年以下有期徒刑、拘役、管制或者剥夺政治权利。
《中华人民共和国刑法》第二百九十一条之一第二款:编造虚假的险情、疫情、灾情、警情,在信息网络或者其他媒体上传播,或者明知是上述虚假信息,故意在信息网络或者其他媒体上传播,严重扰乱社会秩序的,处三年以下有期徒刑、拘役或者管制;造成严重后果的,处三年以上七年以下有期徒刑。
我们应该不信谣、不传谣,同时也要提高法律意识,避免因轻信或不负责任的传播而成为谣言的帮凶。
查看全部
一、什么是网络谣言
网络谣言是指通过网络介质(例如微博、国外网站、网络论坛、社交网站、聊天软件等)传播的没有事实根据的传闻,其主要涉及突发事件、公共卫生、食品药品安全领域、政治人物 、颠覆传统、离经叛道领域等主要内容。
二、网络谣言的具体表现形式
例如一些自媒体从业人员假借社会热点事件编造传播网络谣言,有的甚至公然在网上自编自导自演、无中生有炮制虚假案事件,以此吸粉引流、非法牟利;一些网站企业落实网络安全主体责任不到位,放任网络谣言在其所属平台大量传播扩散,造成恶劣社会影响;一些“网络水军”团伙频繁插手、恶意炒作相关案事件,通过编造传播虚假信息“造热点”!“蹭热度"“带节奏”从而获利等形式。
三、网络谣言的危害性
1、侵犯个人权利
网络谣言侵犯个人、法人或其他组织的名誉权、荣誉权等。
2、社会秩序与信任体系受损
网络谣言能够严重干扰民众的正常生活,并破坏社会信任体系,损害党和政府形象。
3、公共安全和公众利益受威胁
谣言的传播可能导致公共安全问题和损害公众利益。
4、扰乱思想和行为
网络谣言能够扰乱人们的思想、心理和行为,导致人们在面对不实的谣言时表现出不适当的反应盲从。
5、对政府决策的影响
在紧急情况下,网络谣言可能会阻碍政府的应急处置,使得政府疲于应付,增加危机处理的难度。
6、容易被境外势力利用
网络谣言容易被人利用,煽动网民情绪影响民众对政府的信任,甚至可能被用作政治手段。
7、对政府决策的影响
在紧急情况下,网络谣言可能会阻碍政府的应急处置,使得政府疲于应付,增加危机处理的难度。
8、容易被境外势力利用
网络谣言容易被人利用,煽动网民情绪影响民众对政府的信任,甚至可能被用作政治手段。
四、恶意传播网络谣言承担的法律后果
根据国家相关法律的规定,行为人在网络制造和传播谣言的,依据情节承担法律责任,不构成犯罪的进行治安管理处罚,构成犯罪的追究刑事责任,造成他人人身安全、精神损害或者财产损失的,可以依法向人民法院提起民事诉讼,追究造谣者的相关法律责任和赔偿责任。
相关法律依据
《中华人民共和国民法典》第一千一百九十四条 【网络侵权责任】网络用户网络服务提供者利用网络侵害他人民事权益的,应当承担侵权责任。法律另有规定的,依照其规定。
《中华人民共和国治安管理处罚法》第二十五条:有下列行为之一的,处五日以上十日以下拘留,可以并处五百元以下罚款,情节较轻的,处五日以下拘留或者五百元以下罚款:
1、写恐吓信或者以其他方法威胁他人人身安全的;
2、公然侮辱他人或者捏造事实诽谤他人的;
3、捏造事实诬告陷害他人,企图使他人受到刑事追究或者受到治安管理处罚的,
4、对证人及其近亲属进行威胁、侮辱、殴打或者打击报复的;
5、多次发送淫秽、侮辱、恐吓或者其他信息,干扰他人正常生活的;
6、偷窥、偷照、窃听、散布他人隐私的。
《中华人民共和国刑法》第一百零五条:以造谣、诽谤或者其他方式煽动颠覆国家政权、推翻社会主义制度的,处五年以下有期徒刑、拘役、管制或者剥夺政治权利;首要分子或者罪行重大的,处五年以上有期徒刑。
《中华人民共和国刑法》第二百二十一条:捏造并散布虚伪事实,损害他人的商业信誉、商品声誉,给他人造成重大损失或者有其他严重情节的,处二年以下有期徒刑或者拘役,并处或者单处罚金。
《中华人民共和国刑法》第二百四十六条:以暴力或者其他方法公然侮辱他人或者捏造事实诽谤他人,情节严重的,处三年以下有期徒刑、拘役、管制或者剥夺政治权利。
《中华人民共和国刑法》第二百九十一条之一第二款:编造虚假的险情、疫情、灾情、警情,在信息网络或者其他媒体上传播,或者明知是上述虚假信息,故意在信息网络或者其他媒体上传播,严重扰乱社会秩序的,处三年以下有期徒刑、拘役或者管制;造成严重后果的,处三年以上七年以下有期徒刑。
我们应该不信谣、不传谣,同时也要提高法律意识,避免因轻信或不负责任的传播而成为谣言的帮凶。
平台(网站)公约
公告 • micform-admin 发表了文章 • 0 个评论 • 17 次浏览 • 2024-02-21 16:05
(1)我们呼吁建立平等友爱的网络社区,尊重网络社区内的其他用户。关爱未成年人群体,关照老年人群体,尊重性别平等;不攻击、谩骂、侮辱、诽谤、歧视他人,不侵犯他人合法权益,传递温暖和谐的社区氛围;
(2)我们鼓励原创、优质的内容。建议减少拼接网络图片、粗劣特效、无实质性的内容;创作画风清晰、完整度高和观赏性强的作品;
(3)我们提倡记录美好生活,表达真实的自己。建议真人出镜或讲解,避免虚假做作、卖惨博人眼球的伪纪实行为;避免故意夸大、营造虚假人设;
(4)我们建议网络用户重视文字的正确使用,避免出现错别字、拼音首字母缩写,自觉遵守语言文字规范;
(5)我们倡导尊重劳动成果、勤俭节约、合理饮食,避免炫耀超高消费、反对餐饮浪费;
(6)请敬畏生命,反对捕杀、盗采珍稀野生动植物,拒绝养殖和食用野生动植物。关爱动物,不虐待、猎杀、交易活体动物;
(7)我们建议网络用户提高网络安全防范意识,对网络交友诱导赌博、贷款、返利、中奖、网络兼职点赞员等网络诈骗行为提高警惕,如有异常可随时向网络平台举报;
(8)我们鼓励用户发布经过科学论证的内容,不造谣、不传谣。我们鼓励经济、教育、医疗卫生、司法等专业人士通过平台认证发布权威真实的信息,分享行业知识,促进行业繁荣。
二、平台不欢迎以下行为
(1)借助社会负面事件、敏感事件进行商业营销宣传;
(2)布易引发人身安全风险的内容:展示/实施危险行为,具有安全隐患的危险动作(包括但不限于:危险驾驶、燃烧柳絮、恶意整蛊他人或潜在的危险元素),含有安全隐患的玩具/道具;
(3)发布哗众取宠、恶意审丑等企图博眼球的不当行为;
(4)发布刻意照搬、模仿他人创意和文案等同质化内容的行为。
三、平台禁止以下行为
(一)危害国家及社会安全
(1)反对宪法所确定的基本原则;
(2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一;
(3)损害国家形象,损害国家荣誉和利益;
(4)煽动民族仇恨、民族歧视,破坏民族团结;
(5)违背/破坏国家宗教政策,宣扬邪教、封建迷信、伪科学;
(6)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序,破坏社会稳定与公共安全;
(7)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
(8)含有法律、行政法规和国家规定禁止的其他内容。
(二)开展、传播违法犯罪行为
(1)扬暴力、恐怖、极端主义,煽动实施暴力、恐怖、极端主义活动;
(2)歪曲、丑化、亵渎、否定英雄烈士及其事迹和精神;
(3)传播淫秽、色情、赌博、毒品、暴力、凶杀、恐怖、教唆犯罪等行为;
(4)群架斗殴、欺凌霸凌等违反治安管理的内容;
(5)利用网络平台实施诈骗、传销、走私等违法犯罪行为;
(三)危及未成年人安全
(1)网络平台禁止任何下列损害未成年人身心健康和合法权益的行为和内容:
①涉及未成年人色情低俗的内容;
②涉及侵害未成年人身体/财产/人格/隐私的行为;
③涉及未成年人不当行为的内容;
④涉及毒害未成年身心健康和价值观的内容;
⑤涉及对未成年人产生潜在危险的行为;
⑥涉及过度消费未成年人的内容;
⑦其他影响未成年人生命财产安全、健康长大的行为和内容。
(2)未成年人在网络平台注册帐号应当得到其监护人的同意,否则监护人可以通过合理方式通知网络平台处理相关帐号。
(四)涉及危险行为、易造成人身伤害
(1)展现厌世、轻生情绪等悲观消极内容;
(2)展示自残、自虐、自杀行为,突出聚焦伤痕、伤疤、伤口等;
(3)传播血腥暴力惊悚的游戏、图片、视频等引人不适的内容。
(五)违背诚信与真实性
(1)侵犯他人名誉权、肖像权、隐私权、专利权、著作权、商标权等合法权益;
(2)未经授权使用他人商号、商标和标识;
(3)散播虚假、谣言等不实、误导性信息;
(六)传播不良价值观
(1)传播软色情、低俗或含有性暗示、性挑逗等易使人产生性联想的内容,展示庸俗、媚俗、低级趣味、粗俗文化;
(2)宣扬畸形的婚恋观,传播、开展情感操控课程;传播低俗婚闹等落后糟粕思想;
(3)发布涉及地域、民族、种族、针对某一群体(残障人士等)恶搞、歧视类内容;
(4)展示各类丧葬过程、丧葬场景,利用逝者炒作、博热度、蹭流量等卖惨内容;
(5)宣扬炫富、拜金主义,歪曲的利益观、金钱观,追崇奢靡腐朽的不良生活观念;
(6)不尊重他人隐私,传播未经当事人允许的偷拍;
(7)其他违反公序良俗、传播社会不文明现象的内容。 查看全部
(1)我们呼吁建立平等友爱的网络社区,尊重网络社区内的其他用户。关爱未成年人群体,关照老年人群体,尊重性别平等;不攻击、谩骂、侮辱、诽谤、歧视他人,不侵犯他人合法权益,传递温暖和谐的社区氛围;
(2)我们鼓励原创、优质的内容。建议减少拼接网络图片、粗劣特效、无实质性的内容;创作画风清晰、完整度高和观赏性强的作品;
(3)我们提倡记录美好生活,表达真实的自己。建议真人出镜或讲解,避免虚假做作、卖惨博人眼球的伪纪实行为;避免故意夸大、营造虚假人设;
(4)我们建议网络用户重视文字的正确使用,避免出现错别字、拼音首字母缩写,自觉遵守语言文字规范;
(5)我们倡导尊重劳动成果、勤俭节约、合理饮食,避免炫耀超高消费、反对餐饮浪费;
(6)请敬畏生命,反对捕杀、盗采珍稀野生动植物,拒绝养殖和食用野生动植物。关爱动物,不虐待、猎杀、交易活体动物;
(7)我们建议网络用户提高网络安全防范意识,对网络交友诱导赌博、贷款、返利、中奖、网络兼职点赞员等网络诈骗行为提高警惕,如有异常可随时向网络平台举报;
(8)我们鼓励用户发布经过科学论证的内容,不造谣、不传谣。我们鼓励经济、教育、医疗卫生、司法等专业人士通过平台认证发布权威真实的信息,分享行业知识,促进行业繁荣。
二、平台不欢迎以下行为
(1)借助社会负面事件、敏感事件进行商业营销宣传;
(2)布易引发人身安全风险的内容:展示/实施危险行为,具有安全隐患的危险动作(包括但不限于:危险驾驶、燃烧柳絮、恶意整蛊他人或潜在的危险元素),含有安全隐患的玩具/道具;
(3)发布哗众取宠、恶意审丑等企图博眼球的不当行为;
(4)发布刻意照搬、模仿他人创意和文案等同质化内容的行为。
三、平台禁止以下行为
(一)危害国家及社会安全
(1)反对宪法所确定的基本原则;
(2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一;
(3)损害国家形象,损害国家荣誉和利益;
(4)煽动民族仇恨、民族歧视,破坏民族团结;
(5)违背/破坏国家宗教政策,宣扬邪教、封建迷信、伪科学;
(6)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序,破坏社会稳定与公共安全;
(7)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
(8)含有法律、行政法规和国家规定禁止的其他内容。
(二)开展、传播违法犯罪行为
(1)扬暴力、恐怖、极端主义,煽动实施暴力、恐怖、极端主义活动;
(2)歪曲、丑化、亵渎、否定英雄烈士及其事迹和精神;
(3)传播淫秽、色情、赌博、毒品、暴力、凶杀、恐怖、教唆犯罪等行为;
(4)群架斗殴、欺凌霸凌等违反治安管理的内容;
(5)利用网络平台实施诈骗、传销、走私等违法犯罪行为;
(三)危及未成年人安全
(1)网络平台禁止任何下列损害未成年人身心健康和合法权益的行为和内容:
①涉及未成年人色情低俗的内容;
②涉及侵害未成年人身体/财产/人格/隐私的行为;
③涉及未成年人不当行为的内容;
④涉及毒害未成年身心健康和价值观的内容;
⑤涉及对未成年人产生潜在危险的行为;
⑥涉及过度消费未成年人的内容;
⑦其他影响未成年人生命财产安全、健康长大的行为和内容。
(2)未成年人在网络平台注册帐号应当得到其监护人的同意,否则监护人可以通过合理方式通知网络平台处理相关帐号。
(四)涉及危险行为、易造成人身伤害
(1)展现厌世、轻生情绪等悲观消极内容;
(2)展示自残、自虐、自杀行为,突出聚焦伤痕、伤疤、伤口等;
(3)传播血腥暴力惊悚的游戏、图片、视频等引人不适的内容。
(五)违背诚信与真实性
(1)侵犯他人名誉权、肖像权、隐私权、专利权、著作权、商标权等合法权益;
(2)未经授权使用他人商号、商标和标识;
(3)散播虚假、谣言等不实、误导性信息;
(六)传播不良价值观
(1)传播软色情、低俗或含有性暗示、性挑逗等易使人产生性联想的内容,展示庸俗、媚俗、低级趣味、粗俗文化;
(2)宣扬畸形的婚恋观,传播、开展情感操控课程;传播低俗婚闹等落后糟粕思想;
(3)发布涉及地域、民族、种族、针对某一群体(残障人士等)恶搞、歧视类内容;
(4)展示各类丧葬过程、丧葬场景,利用逝者炒作、博热度、蹭流量等卖惨内容;
(5)宣扬炫富、拜金主义,歪曲的利益观、金钱观,追崇奢靡腐朽的不良生活观念;
(6)不尊重他人隐私,传播未经当事人允许的偷拍;
(7)其他违反公序良俗、传播社会不文明现象的内容。
Java多线程相关知识【10】--解释volatile关键字
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 923 次浏览 • 2019-10-18 15:55
菜鸟的一个学习笔记,大神请绕路。
## 1.问题的引入
假设两个人同时对银行的一个账户进行存入1元钱操作,若银行未进行一定的保障,则有可能造成两个人同时存入一元钱,而这个账户仅仅会添加一元钱,而将会丢失一元钱的情况,那么如何保证这种情况不被发生呢?
## 2.问题发生的原因
由于两人同时存入前,计算机读取数据时,并不会判断在读取数据后是否会发成改变,并且都将相应读到的数据存到计算机内,而仅对当前读到的数据进行保存,而忽略了多个人同时操作时发生的与时间有关的问题,故会造成读到脏数据的情况。(详见操作系统,多线程相关原理的解释)
## 3.解决的方法
### 3.1.解决方法的理论
### 3.1.1总线加锁
总线加锁即当操作共享数据时,将会为访问的数据进行全部加锁的方式,这种方式虽然能解决相关程序的运行问题,但是,同样也会造成系统的运行效率低下等问题。
### 3.1.2.使用cpu高速缓存一致性协议(Intel 提出)
思想:cpu写入数据时,发现被共享时,会通知其他拥有副本的cpu需要立即更新缓存,即之前的信息失效,其他的cpu在收到信号后,会重新到相应内存区重新获取相应数据,这也就解决多个线程访问时数据不一致的问题。而Java在使用volatile关键字时,即使用了这个设计的思想。
### 3.2.Java中的多线程的三大原则
#### 3.2.1.原子性(atomic)
一个操作要么都成功,要么都失败,不能因为任何原因被中断。
#### 3.2.2.有序性(order)
相应的操作需要按顺序执行(重排序为只要求结果一致性(重排序能优化单线程的执行效率),但在多线程中,会产生相关的错误)
##### Java默认提供的有序性(happens-before)
1. 代码执行时顺序为写在前面的代码先发生,写在后面的后发生。
2. 解锁操作必须在锁之后。
3. 多线程时,volatile修饰的关键字先执行写操作,后执行读操作。
4. 如果A操作先于B操作,B操作先于C操作,那么A操作必定先于C操作。
5. 在线程启动时,线程的创建必定优先于线程的执行。
6. 在线程中断时,线程的中断操作(interrupt)必须发生在捕获异常发生之前。
7. 对象的初始化,必须发生在销毁之前。
8. 线程的所有操作必须发生在线程的销毁之前。
#### 3.3.3.可见性(visable)
任何时间看到的数据应为最新的数据,而并非为旧的数据(防止操作系统的与时间有关的错误)
### 3.3.Java中的解决方法(使用volatile)
在Java中,未了解决操作系统中的与时间有关的错误的问题时,为了简单起见,通常会使用volatile关键字,但本关键字也有一定的使用限制,具体如下:
#### 3.3.1.使用volatile关键字的优点和缺点
1. 一旦此变量被关键字修饰,则虚拟机则保证了执行的可见性(V)和有序性(O),但并不能保证这个变量的原子性(A)。
2. 保证重排序时,指令的执行顺序不被修改
3. 强制使缓存的数据立刻写入主存
4. 若对关键字修饰的变量进行写操作,则会是其他cpu的缓存的数据在写入修改后立即失效。
#### 3.3.2.volatile关键字的使用场景
1. 需要进行状态量的标记时,可使用本关键字。
2. 需要保证关键字修饰的语句的执行的先后顺序不发送改变,即运行一致性时,可使用本关键字。 查看全部
# Java多线程相关知识【10】--解释volatile关键字
菜鸟的一个学习笔记,大神请绕路。
## 1.问题的引入
假设两个人同时对银行的一个账户进行存入1元钱操作,若银行未进行一定的保障,则有可能造成两个人同时存入一元钱,而这个账户仅仅会添加一元钱,而将会丢失一元钱的情况,那么如何保证这种情况不被发生呢?
## 2.问题发生的原因
由于两人同时存入前,计算机读取数据时,并不会判断在读取数据后是否会发成改变,并且都将相应读到的数据存到计算机内,而仅对当前读到的数据进行保存,而忽略了多个人同时操作时发生的与时间有关的问题,故会造成读到脏数据的情况。(详见操作系统,多线程相关原理的解释)
## 3.解决的方法
### 3.1.解决方法的理论
### 3.1.1总线加锁
总线加锁即当操作共享数据时,将会为访问的数据进行全部加锁的方式,这种方式虽然能解决相关程序的运行问题,但是,同样也会造成系统的运行效率低下等问题。
### 3.1.2.使用cpu高速缓存一致性协议(Intel 提出)
思想:cpu写入数据时,发现被共享时,会通知其他拥有副本的cpu需要立即更新缓存,即之前的信息失效,其他的cpu在收到信号后,会重新到相应内存区重新获取相应数据,这也就解决多个线程访问时数据不一致的问题。而Java在使用volatile关键字时,即使用了这个设计的思想。
### 3.2.Java中的多线程的三大原则
#### 3.2.1.原子性(atomic)
一个操作要么都成功,要么都失败,不能因为任何原因被中断。
#### 3.2.2.有序性(order)
相应的操作需要按顺序执行(重排序为只要求结果一致性(重排序能优化单线程的执行效率),但在多线程中,会产生相关的错误)
##### Java默认提供的有序性(happens-before)
1. 代码执行时顺序为写在前面的代码先发生,写在后面的后发生。
2. 解锁操作必须在锁之后。
3. 多线程时,volatile修饰的关键字先执行写操作,后执行读操作。
4. 如果A操作先于B操作,B操作先于C操作,那么A操作必定先于C操作。
5. 在线程启动时,线程的创建必定优先于线程的执行。
6. 在线程中断时,线程的中断操作(interrupt)必须发生在捕获异常发生之前。
7. 对象的初始化,必须发生在销毁之前。
8. 线程的所有操作必须发生在线程的销毁之前。
#### 3.3.3.可见性(visable)
任何时间看到的数据应为最新的数据,而并非为旧的数据(防止操作系统的与时间有关的错误)
### 3.3.Java中的解决方法(使用volatile)
在Java中,未了解决操作系统中的与时间有关的错误的问题时,为了简单起见,通常会使用volatile关键字,但本关键字也有一定的使用限制,具体如下:
#### 3.3.1.使用volatile关键字的优点和缺点
1. 一旦此变量被关键字修饰,则虚拟机则保证了执行的可见性(V)和有序性(O),但并不能保证这个变量的原子性(A)。
2. 保证重排序时,指令的执行顺序不被修改
3. 强制使缓存的数据立刻写入主存
4. 若对关键字修饰的变量进行写操作,则会是其他cpu的缓存的数据在写入修改后立即失效。
#### 3.3.2.volatile关键字的使用场景
1. 需要进行状态量的标记时,可使用本关键字。
2. 需要保证关键字修饰的语句的执行的先后顺序不发送改变,即运行一致性时,可使用本关键字。
Java多线程相关知识【9】--设计模式--WaitSet方式
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1234 次浏览 • 2019-10-18 15:55
# Java多线程相关知识【9】--设计模式--WaitSet方式
## 1.WaitSet的具体含义
由于一个线程的生命周期可能存在运行,阻塞,就绪等状态,而使用WaitSet的Wait后,线程则可直接进入阻塞状态,而等待相应Set的信号唤醒。
当线程被唤醒后,线程并非能直接进入运行状态,相应的,则可能进入就绪状态,等待系统调度进入相应的执行状态。
在多个线程被唤醒时,唤醒的顺序并非先进先出的,即相应的进程并非有一定的执行顺序。
线程被唤醒后,需重新申请锁,且在申请后将会返回唤醒的位置,并非重新运行代码。
## 2.Java中WaitSet的实现方法
在WaitSet中,wait相当于对象中的wait()方法。
具体使用的代码如下:
```java
[对象].wait();
```
在WaitSet中,Set相当于对象中的notify()方法。
具体使用的代码如下:
```java
[对象].notify();
``` 查看全部
[TOC]
# Java多线程相关知识【9】--设计模式--WaitSet方式
## 1.WaitSet的具体含义
由于一个线程的生命周期可能存在运行,阻塞,就绪等状态,而使用WaitSet的Wait后,线程则可直接进入阻塞状态,而等待相应Set的信号唤醒。
当线程被唤醒后,线程并非能直接进入运行状态,相应的,则可能进入就绪状态,等待系统调度进入相应的执行状态。
在多个线程被唤醒时,唤醒的顺序并非先进先出的,即相应的进程并非有一定的执行顺序。
线程被唤醒后,需重新申请锁,且在申请后将会返回唤醒的位置,并非重新运行代码。
## 2.Java中WaitSet的实现方法
在WaitSet中,wait相当于对象中的wait()方法。
具体使用的代码如下:
```java
[对象].wait();
```
在WaitSet中,Set相当于对象中的notify()方法。
具体使用的代码如下:
```java
[对象].notify();
```
Java多线程相关知识【8】--设计模式--Singleton方式
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1230 次浏览 • 2019-10-18 15:54
# Java多线程相关知识【8】--设计模式--Singleton方式
## 一、四种单例模式(Singleton)的优缺点在多线程下
### 1.饿汉式
优点:实现简单。
缺点:使用前即主动加载,若很长时间未使用,易造成内存浪费。
代码实现如下所示:
```java
/**
* 饿汉式单例模式
*/
public class SingelazeHangers {
//创建类时即创建了元素
private static SingelazeHangers instance = new SingelazeHangers();
private SingelazeHangers() {
}
/**
* 真正执行时调用此元素
* @return 返回单例设计
*/
public static SingelazeHangers getInstance() {
return instance;
}
//测试实例加载
public static void main(String[] args) {
SingelazeHangers s=SingelazeHangers.getInstance();
}
}
```
### 2.懒汉式
优点:需要时才会加载,减少内存的浪费。
缺点:多个线程同时获取时,可能会被创建多次,易产生问题,可能不是单个实例。
```java
/**
* 懒汉式单例模式
*/
public class SingelazeLazyers {
//创建时并未创建类
public static SingelazeLazyers instance = null;
private SingelazeLazyers() {
}
/**
* 需要时进行类的创建
* @return 返回创建的结果
*/
public static SingelazeLazyers getInstance() {
if (instance == null)
instance = new SingelazeLazyers();
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyers s=SingelazeLazyers.getInstance();
}
}
```
### 3.懒汉式改进
#### 1.函数加锁
优点:解决懒汉加载可能创建多个实例的问题。
缺点:性能低下。
说明:多线程使用时,虽然会解决创建非单例的问题,但是,在创建后,所有的线程依然需要进行等待,会浪费大量的时间进行单例的获取。
代码实现如下:
```java
/**
* 懒汉式单例模式(加类锁)
*/
public class SingelazeLazyersClassLock {
//创建时并未创建类
public static SingelazeLazyersClassLock instance = null;
private SingelazeLazyersClassLock() {
}
/**
* 需要时进行类的创建(关键字在此添加)
* @return 返回创建的结果
*/
public synchronized static SingelazeLazyersClassLock getInstance() {
if (instance == null)
instance = new SingelazeLazyersClassLock();
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersClassLock s= SingelazeLazyersClassLock.getInstance();
}
}
```
#### 2.双重判断
优点:解决函数加锁产生的性能问题。
缺点:易产生空指针异常。
说明:多线程使用时,第一个获取的元素释放了相关的锁,但是,对象内部的内容并未创建完成,导致其他线程调用到方法时,虽然拿到了对象,但对象内,需要使用的方法并未被实例化。
代码实现如下:
```java
/**
* 懒汉式单例模式(双重锁)
*/
public class SingelazeLazyersDoubleCheck {
//创建时并未创建类
public static SingelazeLazyersDoubleCheck instance = null;
private SingelazeLazyersDoubleCheck() {
}
/**
* 需要时进行类的创建(内容在此修改)
*
* @return 返回创建的结果
*/
public static SingelazeLazyersDoubleCheck getInstance() {
if (instance == null) {
synchronized (SingelazeLazyersDoubleCheck.class) {
if (instance == null)
instance = new SingelazeLazyersDoubleCheck();
}
}
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersDoubleCheck s = SingelazeLazyersDoubleCheck.getInstance();
}
}
```
## 二、三种优雅实现单例的方法
### 1.双重判断的改进
volatile关键字非原子性的,他可保证内存是可见的,并能够指定编译器及虚拟机不可对相关的语句进行优化,并保证在读相应内存区时,相关元素的创建必须完成。
缺点:虚拟机未优化,执行效率低下。
```java
/**
* 懒汉式单例模式(双重锁,内存可见式)
*/
public class SingelazeLazyersDoubleCheckVolatile {
//创建时并未创建类(关键字在此添加)
public volatile static SingelazeLazyersDoubleCheckVolatile instance = null;
private SingelazeLazyersDoubleCheckVolatile() {
}
/**
* 需要时进行类的创建
*
* @return 返回创建的结果
*/
public static SingelazeLazyersDoubleCheckVolatile getInstance() {
if (instance == null) {
synchronized (SingelazeLazyersDoubleCheckVolatile.class) {
if (instance == null)
instance = new SingelazeLazyersDoubleCheckVolatile();
}
}
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersDoubleCheckVolatile s = SingelazeLazyersDoubleCheckVolatile.getInstance();
}
}
```
### 2.等待加载方式(不加锁)
利用java的类加载机制,保证了单例模式的准确性,由于static关键字,保证了初始化的单一性。
代码实现如下:
```java
/**
* 等待加载模式
*/
public class SingelazeHoder {
private SingelazeHoder() {
}
/**
* 内部私有类
*/
private static class InstanceHoderHelper{
private static final SingelazeHoder instance=new SingelazeHoder();
}
/**
* 获取单例元素
* @return 单例元素
*/
public static SingelazeHoder getInstance(){
return InstanceHoderHelper.instance;
}
/**
* 其他类引用时的使用方法
* @param args
*/
public static void main(String[] args) {
SingelazeHoder s=SingelazeHoder.getInstance();
}
}
```
### 3.利用枚举的方式实现
枚举类型是私有的,且为线程安全的,且在构造时,只会被装载一次,故能实现相关的单例模式。
```java
/**
* 利用枚举实现单例模式
*/
public class SingletonEnum {
private SingletonEnum(){}
//利用枚举
private enum Singleton {
INSTANCE;
private SingletonEnum instance=null;
Singleton(){
instance=new SingletonEnum();
}
public SingletonEnum getInstance() {
return instance;
}
}
//获取单例信息
public static SingletonEnum getInstance(){
return Singleton.INSTANCE.getInstance();
}
//其他类使用时调用方法
public static void main(String[] args) {
SingletonEnum s=SingletonEnum.getInstance();
}
}
``` 查看全部
[TOC]
# Java多线程相关知识【8】--设计模式--Singleton方式
## 一、四种单例模式(Singleton)的优缺点在多线程下
### 1.饿汉式
优点:实现简单。
缺点:使用前即主动加载,若很长时间未使用,易造成内存浪费。
代码实现如下所示:
```java
/**
* 饿汉式单例模式
*/
public class SingelazeHangers {
//创建类时即创建了元素
private static SingelazeHangers instance = new SingelazeHangers();
private SingelazeHangers() {
}
/**
* 真正执行时调用此元素
* @return 返回单例设计
*/
public static SingelazeHangers getInstance() {
return instance;
}
//测试实例加载
public static void main(String[] args) {
SingelazeHangers s=SingelazeHangers.getInstance();
}
}
```
### 2.懒汉式
优点:需要时才会加载,减少内存的浪费。
缺点:多个线程同时获取时,可能会被创建多次,易产生问题,可能不是单个实例。
```java
/**
* 懒汉式单例模式
*/
public class SingelazeLazyers {
//创建时并未创建类
public static SingelazeLazyers instance = null;
private SingelazeLazyers() {
}
/**
* 需要时进行类的创建
* @return 返回创建的结果
*/
public static SingelazeLazyers getInstance() {
if (instance == null)
instance = new SingelazeLazyers();
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyers s=SingelazeLazyers.getInstance();
}
}
```
### 3.懒汉式改进
#### 1.函数加锁
优点:解决懒汉加载可能创建多个实例的问题。
缺点:性能低下。
说明:多线程使用时,虽然会解决创建非单例的问题,但是,在创建后,所有的线程依然需要进行等待,会浪费大量的时间进行单例的获取。
代码实现如下:
```java
/**
* 懒汉式单例模式(加类锁)
*/
public class SingelazeLazyersClassLock {
//创建时并未创建类
public static SingelazeLazyersClassLock instance = null;
private SingelazeLazyersClassLock() {
}
/**
* 需要时进行类的创建(关键字在此添加)
* @return 返回创建的结果
*/
public synchronized static SingelazeLazyersClassLock getInstance() {
if (instance == null)
instance = new SingelazeLazyersClassLock();
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersClassLock s= SingelazeLazyersClassLock.getInstance();
}
}
```
#### 2.双重判断
优点:解决函数加锁产生的性能问题。
缺点:易产生空指针异常。
说明:多线程使用时,第一个获取的元素释放了相关的锁,但是,对象内部的内容并未创建完成,导致其他线程调用到方法时,虽然拿到了对象,但对象内,需要使用的方法并未被实例化。
代码实现如下:
```java
/**
* 懒汉式单例模式(双重锁)
*/
public class SingelazeLazyersDoubleCheck {
//创建时并未创建类
public static SingelazeLazyersDoubleCheck instance = null;
private SingelazeLazyersDoubleCheck() {
}
/**
* 需要时进行类的创建(内容在此修改)
*
* @return 返回创建的结果
*/
public static SingelazeLazyersDoubleCheck getInstance() {
if (instance == null) {
synchronized (SingelazeLazyersDoubleCheck.class) {
if (instance == null)
instance = new SingelazeLazyersDoubleCheck();
}
}
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersDoubleCheck s = SingelazeLazyersDoubleCheck.getInstance();
}
}
```
## 二、三种优雅实现单例的方法
### 1.双重判断的改进
volatile关键字非原子性的,他可保证内存是可见的,并能够指定编译器及虚拟机不可对相关的语句进行优化,并保证在读相应内存区时,相关元素的创建必须完成。
缺点:虚拟机未优化,执行效率低下。
```java
/**
* 懒汉式单例模式(双重锁,内存可见式)
*/
public class SingelazeLazyersDoubleCheckVolatile {
//创建时并未创建类(关键字在此添加)
public volatile static SingelazeLazyersDoubleCheckVolatile instance = null;
private SingelazeLazyersDoubleCheckVolatile() {
}
/**
* 需要时进行类的创建
*
* @return 返回创建的结果
*/
public static SingelazeLazyersDoubleCheckVolatile getInstance() {
if (instance == null) {
synchronized (SingelazeLazyersDoubleCheckVolatile.class) {
if (instance == null)
instance = new SingelazeLazyersDoubleCheckVolatile();
}
}
return instance;
}
//测试单例模式
public static void main(String[] args) {
SingelazeLazyersDoubleCheckVolatile s = SingelazeLazyersDoubleCheckVolatile.getInstance();
}
}
```
### 2.等待加载方式(不加锁)
利用java的类加载机制,保证了单例模式的准确性,由于static关键字,保证了初始化的单一性。
代码实现如下:
```java
/**
* 等待加载模式
*/
public class SingelazeHoder {
private SingelazeHoder() {
}
/**
* 内部私有类
*/
private static class InstanceHoderHelper{
private static final SingelazeHoder instance=new SingelazeHoder();
}
/**
* 获取单例元素
* @return 单例元素
*/
public static SingelazeHoder getInstance(){
return InstanceHoderHelper.instance;
}
/**
* 其他类引用时的使用方法
* @param args
*/
public static void main(String[] args) {
SingelazeHoder s=SingelazeHoder.getInstance();
}
}
```
### 3.利用枚举的方式实现
枚举类型是私有的,且为线程安全的,且在构造时,只会被装载一次,故能实现相关的单例模式。
```java
/**
* 利用枚举实现单例模式
*/
public class SingletonEnum {
private SingletonEnum(){}
//利用枚举
private enum Singleton {
INSTANCE;
private SingletonEnum instance=null;
Singleton(){
instance=new SingletonEnum();
}
public SingletonEnum getInstance() {
return instance;
}
}
//获取单例信息
public static SingletonEnum getInstance(){
return Singleton.INSTANCE.getInstance();
}
//其他类使用时调用方法
public static void main(String[] args) {
SingletonEnum s=SingletonEnum.getInstance();
}
}
```
Java多线程相关知识【5】--锁
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1111 次浏览 • 2019-10-18 15:54
# Java多线程相关知识【5】--锁
菜鸟的一个学习笔记,欢迎大神<font color=red>批评指正</font>。
## 1. 使用synchronized关键字
### 1. 对变量进行加锁
```java
private final static Object object = new Object();
private void lockTest() {
synchronized (object) {
//do some
}
}
```
### 2. 对函数进行加锁
```java
private synchronized void lockTest2() {
//do some
}
```
### 3. 对类进行加锁
```java
private synchronized void lockTest3() {
synchronized (this) {
//do some
}
}
```
## 2. 自实现一个LOCK
### 锁接口
```java
/**
* 锁 提供功能
*/
public interface MyLock {
class TimeOutException extends Exception{
public TimeOutException(String message) {
super(message);
}
}
/**
* 加锁
* @throws InterruptedException
*/
void lock() throws InterruptedException;
/**
* 加锁
* @param times 锁的时间毫秒
* @throws InterruptedException
* @throws TimeOutException
*/
void lock(long times) throws InterruptedException,TimeOutException;
/**
* 解锁
*/
void unLock();
/**
* 获取锁住的线程
* @return
*/
Collection<Thread> getBlockThread();
/**
* 获取锁住的数目
* @return
*/
int getBlockSize();
}
```
### 锁实现
```java
/**
* 锁实现,实现锁的功能
*/
public class MyLockImpl implements MyLock {
private boolean initValue;
private Collection<Thread> threadCollection = new ArrayList<>();
private Thread thisThread;
public MyLockImpl() {
this.initValue = false;
}
@Override
public void lock() throws InterruptedException {
while (initValue) {
threadCollection.add(Thread.currentThread());
this.wait();
}
threadCollection.remove(Thread.currentThread());
this.initValue=true;
thisThread =Thread.currentThread();
}
@Override
public void lock(long times) throws InterruptedException, TimeOutException {
if (times<=0)
lock();
long hasTime=times;
long endTime=System.currentTimeMillis()+hasTime;
while (initValue) {
if (hasTime<=0)
throw new TimeOutException("Time Out!");
threadCollection.add(Thread.currentThread());
this.wait(times);
hasTime=endTime-System.currentTimeMillis();
}
threadCollection.remove(Thread.currentThread());
this.initValue=true;
thisThread =Thread.currentThread();
}
@Override
public void unLock() {
if (Thread.currentThread()==thisThread){
this.initValue=false;
Optional.ofNullable(Thread.currentThread().getName()+" unlock!")
.ifPresent(System.out::println);
this.notifyAll();
}
}
@Override
public Collection<Thread> getBlockThread() {
return threadCollection;
}
@Override
public int getBlockSize() {
return threadCollection.size();
}
}
``` 查看全部
[TOC]
# Java多线程相关知识【5】--锁
菜鸟的一个学习笔记,欢迎大神<font color=red>批评指正</font>。
## 1. 使用synchronized关键字
### 1. 对变量进行加锁
```java
private final static Object object = new Object();
private void lockTest() {
synchronized (object) {
//do some
}
}
```
### 2. 对函数进行加锁
```java
private synchronized void lockTest2() {
//do some
}
```
### 3. 对类进行加锁
```java
private synchronized void lockTest3() {
synchronized (this) {
//do some
}
}
```
## 2. 自实现一个LOCK
### 锁接口
```java
/**
* 锁 提供功能
*/
public interface MyLock {
class TimeOutException extends Exception{
public TimeOutException(String message) {
super(message);
}
}
/**
* 加锁
* @throws InterruptedException
*/
void lock() throws InterruptedException;
/**
* 加锁
* @param times 锁的时间毫秒
* @throws InterruptedException
* @throws TimeOutException
*/
void lock(long times) throws InterruptedException,TimeOutException;
/**
* 解锁
*/
void unLock();
/**
* 获取锁住的线程
* @return
*/
Collection<Thread> getBlockThread();
/**
* 获取锁住的数目
* @return
*/
int getBlockSize();
}
```
### 锁实现
```java
/**
* 锁实现,实现锁的功能
*/
public class MyLockImpl implements MyLock {
private boolean initValue;
private Collection<Thread> threadCollection = new ArrayList<>();
private Thread thisThread;
public MyLockImpl() {
this.initValue = false;
}
@Override
public void lock() throws InterruptedException {
while (initValue) {
threadCollection.add(Thread.currentThread());
this.wait();
}
threadCollection.remove(Thread.currentThread());
this.initValue=true;
thisThread =Thread.currentThread();
}
@Override
public void lock(long times) throws InterruptedException, TimeOutException {
if (times<=0)
lock();
long hasTime=times;
long endTime=System.currentTimeMillis()+hasTime;
while (initValue) {
if (hasTime<=0)
throw new TimeOutException("Time Out!");
threadCollection.add(Thread.currentThread());
this.wait(times);
hasTime=endTime-System.currentTimeMillis();
}
threadCollection.remove(Thread.currentThread());
this.initValue=true;
thisThread =Thread.currentThread();
}
@Override
public void unLock() {
if (Thread.currentThread()==thisThread){
this.initValue=false;
Optional.ofNullable(Thread.currentThread().getName()+" unlock!")
.ifPresent(System.out::println);
this.notifyAll();
}
}
@Override
public Collection<Thread> getBlockThread() {
return threadCollection;
}
@Override
public int getBlockSize() {
return threadCollection.size();
}
}
```
Java多线程相关知识【4】--线程同步
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1101 次浏览 • 2019-10-18 15:50
菜鸟的一个学习笔记,欢迎大神<font color=red>批评指正</font>。
## 利用join()使多个线程同步
```java
Thread t1 = new Thread(() -> {
try {
Thread.sleep(RANDOM.nextInt(1000));
System.out.println(Thread.currentThread().getName() + " finished!");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
Thread.sleep(RANDOM.nextInt(1000));
System.out.println(Thread.currentThread().getName() + " finished!");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("同步后执行");
``` 查看全部
# Java多线程相关知识【4】--线程同步
菜鸟的一个学习笔记,欢迎大神<font color=red>批评指正</font>。
## 利用join()使多个线程同步
```java
Thread t1 = new Thread(() -> {
try {
Thread.sleep(RANDOM.nextInt(1000));
System.out.println(Thread.currentThread().getName() + " finished!");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
Thread.sleep(RANDOM.nextInt(1000));
System.out.println(Thread.currentThread().getName() + " finished!");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("同步后执行");
```
Java多线程相关知识【2】--Thread的构造方法
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1076 次浏览 • 2019-10-18 15:47
菜鸟的一个学习笔记,大神请绕路。
一、Thread()
新建一个线程,这个线程,若未手动实现他的run方法,他将什么也不干。
Thread() 的使用方法通常是:Thread a = new Thread(){ @Override public void run() { // do some thing } };二、Thread(Runnable target)
新建一个线程,这个线程将运行Runnable中的run方法。
Thread(Runnable target)的使用方法通常是: Runnable runnable=new Runnable() { @Override public void run() { // do some thing } }; Thread tRunnable=new Thread(runnable);在java8中,可以使用lambda表达式将以上内容简化: Thread tRL=new Thread(()->{ //do some thing });此方法的实现原理:
将Runnable的run方法保存,在运行时,虚拟机将自动调用Runnable的run()方法。
三、Thread(String name)
为运行的线程标记一个名字,若未标记,则会使用Thread+当前序号来进行名称的标识。
四、Thread(Runnable target, String name)
同上三四两点的结合。
五、Thread(ThreadGroup group, Runnable target)
将线程加入一个线程组中,默认加入的线程组为main。
六、Thread(ThreadGroup group, Runnable target, String name)
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字。
七、Thread(ThreadGroup group, Runnable target, String name, long stackSize)
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字,并设置其最大栈深度,~ 默认深度为随机的(不确定)。
八、Thread(ThreadGroup group, String name)
线程组
可将多个线程放入的一个容器。
构造方法
1. ThreadGroup(String name)
创建一个线程组并设置这个线程组的名称。
2. ThreadGroup(ThreadGroup parent, String name)
创建一个线程组,设置这个线程组的父线程组,并设置这个线程组的名称。
函数含义
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字。
查看全部
菜鸟的一个学习笔记,大神请绕路。
一、Thread()
新建一个线程,这个线程,若未手动实现他的run方法,他将什么也不干。
Thread() 的使用方法通常是:Thread a = new Thread(){ @Override public void run() { // do some thing } };二、Thread(Runnable target)
新建一个线程,这个线程将运行Runnable中的run方法。
Thread(Runnable target)的使用方法通常是: Runnable runnable=new Runnable() { @Override public void run() { // do some thing } }; Thread tRunnable=new Thread(runnable);在java8中,可以使用lambda表达式将以上内容简化: Thread tRL=new Thread(()->{ //do some thing });此方法的实现原理:
将Runnable的run方法保存,在运行时,虚拟机将自动调用Runnable的run()方法。
三、Thread(String name)
为运行的线程标记一个名字,若未标记,则会使用Thread+当前序号来进行名称的标识。
四、Thread(Runnable target, String name)
同上三四两点的结合。
五、Thread(ThreadGroup group, Runnable target)
将线程加入一个线程组中,默认加入的线程组为main。
六、Thread(ThreadGroup group, Runnable target, String name)
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字。
七、Thread(ThreadGroup group, Runnable target, String name, long stackSize)
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字,并设置其最大栈深度,~ 默认深度为随机的(不确定)。
八、Thread(ThreadGroup group, String name)
线程组
可将多个线程放入的一个容器。
构造方法
1. ThreadGroup(String name)
创建一个线程组并设置这个线程组的名称。
2. ThreadGroup(ThreadGroup parent, String name)
创建一个线程组,设置这个线程组的父线程组,并设置这个线程组的名称。
函数含义
将线程加入一个线程组中,默认加入的线程组为main,并设置线程名字。
Java多线程相关知识【1】--新建线程
多线程学习 • micform-admin 发表了文章 • 0 个评论 • 1312 次浏览 • 2019-10-18 15:45
菜鸟的一个学习笔记,大神请绕路。
一、extend (继承Thread类)
新建一个thread,并重写其中的run方法
public class ExtendThread extends Thread { @Override public void run() { //do something } }
将继承的类实例化
Thread myThread = new ExtendThread();
调用实例化对象启动线程
myThread.start();
二、implements (实现Runnable接口)
实现implements接口,并实现其中的run方法
public class ImplementsThread implements Runnable { public void run() { //do something } }
使用thread方法,并将接口实例化的结果作为thread的参数传入thread方法,初始化线程
Thread myThread=new Thread(new ImplementsThread());
调用实例化对象启动线程
myThread.start();
知道如何新建线程了,接下来我们将深入的理解Thread的构造方法 查看全部
菜鸟的一个学习笔记,大神请绕路。
一、extend (继承Thread类)
新建一个thread,并重写其中的run方法
public class ExtendThread extends Thread { @Override public void run() { //do something } }
将继承的类实例化
Thread myThread = new ExtendThread();
调用实例化对象启动线程
myThread.start();
二、implements (实现Runnable接口)
实现implements接口,并实现其中的run方法
public class ImplementsThread implements Runnable { public void run() { //do something } }
使用thread方法,并将接口实例化的结果作为thread的参数传入thread方法,初始化线程
Thread myThread=new Thread(new ImplementsThread());
调用实例化对象启动线程
myThread.start();
知道如何新建线程了,接下来我们将深入的理解Thread的构造方法