Java多进程间的全局变量共享吗

发布时间:2022-01-18 10:05:43 作者:iii
来源:亿速云 阅读:260

本篇内容主要讲解“Java多进程间的全局变量共享吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java多进程间的全局变量共享吗”吧!

前言

问题:多进程间的全局变量共享吗?

import multiprocessing as mul_p
import time

egg1 = 1


def write(egg2, q):

   global egg1
   print("write全局变量彩蛋[%s]..." % egg1)
   print("write彩蛋[%s]..." % egg2)
   egg1 -= 1
   print("write全局变量彩蛋[%s]...原来的彩蛋[1]" % egg1)

   # 将修改后的彩蛋1的值放入队列中去
   q.put(egg1)


def read(egg2, q):

   global egg1
   print("read全局变量彩蛋[%s]..." % egg1)
   print("read彩蛋[%s]..." % egg2)

   while True:

       # 从队列中取出 p1 子进程中的 全局变量彩蛋1 的值
       egg1 = q.get()
       print("read接收到的write中的全局变量彩蛋[1]的值:%d" % egg1)
       if q.empty():
           print("接收完毕...")
           break


def main():

   # 假设连个进程都需要打印下面这个彩蛋2
   egg2 = 2

   # ① 创建一个队列,可以不填,队列就可以很大,但有个极限,我们不去考虑它
   #   如果填了数字为 x ,则这个队列可以存储 x 个数据
   q = mul_p.Queue()

   # ② 创建两个进程对象
   p1 = mul_p.Process(target=write, args=(egg2, q,))
   p2 = mul_p.Process(target=read, args=(egg2, q,))

   # ③ 让两个子进程开始工作
   p1.start()
   # 先让主进程 休息1s 让 p1 子进程先执行完,不然两个子进程 争着执行 打印输出会乱套
   time.sleep(1)
   p2.start()


if __name__ == "__main__":
   main()

运行结果:

write全局变量彩蛋[1]...
write彩蛋[2]...
write全局变量彩蛋[0]...原来的彩蛋[1]
read全局变量彩蛋[1]...
read彩蛋[2]...
read接收到的write中的全局变量彩蛋[1]的值:0
接收完毕...

二、总结

到此,相信大家对“Java多进程间的全局变量共享吗”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. android进程间共享简单数据
  2. 进程间通信——共享内存

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Dapr微服务的原理是什么

下一篇:服务器性能优化有哪些衡量指标

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》