java互斥锁 全局变量_多线程共享全局变量(加入互斥锁)

efe20555a906

上半部分代码截图

efe20555a906

下半部分代码截图

#抛开互斥锁,我们先说说多线程共享全局变量问题:

1. 导入包,定义全局变量num(type为int类型)

2. 定义函数,在其内需要声明变量num(因为num是int类型,文章最后扩展说明),而后就

可以改变变量的值(内存地址发生了变化)

3. 定义另一个函数,同样的的声明变量(共享全局变量)

4. 定义线程变量名并且启动线程(target=(函数名)............)

5. 代码最后的t1.join()意思是让 t1 所在的线程执行完然后执行下一线程(在本程序里和互斥     锁有相同的作用)

6.启动主程序!

#互斥锁:

在使用之前,需要创建互斥锁变量,然后按照上图上锁与释放锁

作用:当代码执行到这一线程需要执行完这一线程然后才能执行其他线程(因为线程执行是无序的,所以说我们谁都不知道什么时候执行,电脑内部机制决定),这和上述join差不多!

线程定义方式:

小样:threading.Thread(target=show_info, name="mythread", kwargs={"name":"杨幂", "age":18})

group = None 表示线程组,目前这个值必须使用

None

target:执行的目标函数

name: 线程的名字, 如果不指定名字,那么名字的命名格式

Thread-1,....

args: 以元组方式给函数传参

args=(元组)

kwargs: 以字典的方式给函数传参

#为何要声明变量?(扩展)

可变类型:列表,字典,集合

不可变类型:数字,字符串,元组,布尔类型

说明:不可变类型如果不用global声明,就会重新生成一个不同地址的变量(改的不是原来的变量),进而需要声明更改其值。可变类型就不用声明,因为往其增添数据不会改变内存地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值