【问题标题】:How to declare shared variable when using multiple threads in Java no semaphores在Java中使用多个线程时如何声明共享变量没有信号量
【发布时间】:2017-11-27 14:54:58
【问题描述】:

我的操作系统类有一个项目,我们需要使用多线程且没有信号量来编写程序,我了解如何用伪代码执行此操作,但是当我正在考虑实现时,我无法弄清楚如何声明共享变量我能想到的就是让另一个线程保存所有共享变量 编辑 1:要同步我们必须使用 while(busywait true) {}

edit 2:通过它的实现,这个项目会让你熟悉 线程,并使用 Thread 类方法。为了同步你的线程 必须使用(必要时)、run()、start()、currentThread()、getName()、join()、yield()、 sleep(time)、isAlive()、getPriority()、setPriority()、interrupt()、isInterrupted(),也许 同步方法。 在同步线程时,不要使用任何信号量。不要使用 wait( )、notify( ) 或 通知所有();

【问题讨论】:

  • 所有这些不切实际的限制使得这个设计对未来的访问者/用户没有用处:(

标签: java multithreading operating-system global-variables


【解决方案1】:

正确的多线程编程假定使用某种同步工具。 任何同步设施都只能使用另一个同步设施来构建。最低级别的同步工具是使用比较和设置处理器命令访问的存储单元。 在 Java 中,与该命令等效的是 AtomicInteger.compareAndSet​(int expectedValue, int newValue) 和其他原子类的类似方法。

【讨论】:

  • 我不能使用原子类
  • 我必须有一个共享变量,比如说busywait和while(bisywait){}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 2019-05-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多