Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何让AtomicInteger在Runnable类中工作

如何让AtomicInteger在Runnable类中工作
EN

Stack Overflow用户
提问于 2019-10-14 22:44:39
回答 1查看 253关注 0票数 0

我用Java语言把这段代码写成Runnable,但是我的教授要我添加AtomicInteger,这样就没有线程干扰了。我该怎么做呢?我试过在代码中查找如何使用它的示例,但我不知道在这种情况下该怎么做。

代码语言:javascript
代码运行次数:0
复制
public class GarageWorker {
    public static void main(String[] args) {
        System.out.println("We are going to count the vehicles in the garage");
        System.out.println();
        System.out.println("There are 50 vehicles in the garage to start with!");
        System.out.println();

        GarageWorker garage = new GarageWorker(50);

        Runnable vehicleEnter = garage.new Enter();
        Runnable vehicleExit = garage.new Exit();

        Thread thread1 = new Thread(vehicleEnter);
        Thread thread2 = new Thread(vehicleExit);

        thread1.start();
        thread2.start();
    }

    public GarageWorker(int initialCarCount) {
        counter = initialCarCount;
    }

    public int counter;

    public class Enter implements Runnable {
        public Enter() {

        }

        public int increaseVehicleCount() {
            return ++counter;
        }

        public void run() {
            while (counter < 100) {
                System.out.println("One vehicle entered the garage now there are " + increaseVehicleCount());
            }
        }
    }

    public class Exit implements Runnable {
        public Exit() {

        }

        public int decreaseVehicleCount() {
            return --counter;
        }

        public void run() {
            while (counter > 0) {
                System.out.println("One vehicle left the garage now there are " + decreaseVehicleCount());
            }
        }
    }
}

代码运行得很好,但是我的教授希望我在代码中实现AtomicInteger类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 23:05:28

我假设您的教授希望您将counter更改为AtomicInteger。首先,您需要导入AtomicInteger,并更改counter和构造函数的声明以反映这一点。

代码语言:javascript
代码运行次数:0
复制
import java.util.concurrent.atomic.AtomicInteger;
代码语言:javascript
代码运行次数:0
复制
public GarageWorker(int initialCarCount) {
    counter = new AtomicInteger(initialCarCount);
}

public AtomicInteger counter;

此外,您还希望更改increaseVehicleCountdecreaseVehicleCount方法,以便使用AtomicInteger而不是int

代码语言:javascript
代码运行次数:0
复制
public int increaseVehicleCount() {
    return counter.incrementAndGet();
}
代码语言:javascript
代码运行次数:0
复制
public int decreaseVehicleCount() {
    return counter.decrementAndGet();
}

正如decrementAndGetincrementAndGet所做的那样:它们会递增(或递减),然后返回新值。有关更多信息,请查看the Javadoc

干杯!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384928

复制
相关文章
如何在 Python 中的绘图图形上手动添加图例颜色和图例字体大小?
Plotly 的 update_layout() 方法以及legend_font_color和legend_font_size参数可用于手动添加图例颜色和字体大小。下面提供了语法的插图 -
很酷的站长
2023/08/11
8390
如何在 Python 中的绘图图形上手动添加图例颜色和图例字体大小?
为你的图片添加图例
图例可以帮助我们更好的理解图中的信息,在matplotlib中,通过legend函数来添加图例,有以下两种用法
生信修炼手册
2020/09/14
1.2K0
如何向图形添加曲形文本
R语言数据分析指南
2023/08/18
2190
如何向图形添加曲形文本
如何向数组里添加元素
一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度,我们如何做到向其中添加元素。
算法与编程之美
2023/01/03
3.5K0
swiper组件添加左右箭头
前言:小程序官方swiper组件并未提供带左右箭头功能,但有些时候还是想把左右箭头添加上,今天连胜老师就给大家分享一下自己的实现方式。 思路很简单:在swiper组件内部添加两个image组件,绑定点击事件,动态改变swiper中的current值。不废话,主要看代码: WXML: <swiper indicator-dots="{{swiper.indicatorDots}}" autoplay="{{swiper.autoplay}}" interval="{{swiper.interval}}"
连胜
2018/03/07
2.9K0
swiper组件添加左右箭头
qcustomplot添加图例_qchart显示点数据
LXTracer::LXTracer(QCustomPlot *_plot, TracerType _type, QObject *parent)
全栈程序员站长
2022/11/08
2.2K0
java如何向数组中添加元素[数组的添加]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说java如何向数组中添加元素[数组的添加],希望能够帮助大家进步!!!
Java架构师必看
2022/04/06
7.7K0
java如何向数组里添加元素
1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。 但有个可以改变大小的数组为ArrayList,即可以定义一个ArrayList数组,然后用add(element)方法往里添加元素即可,还可add(index,element)往指定下标处添加元素;例子如下:
全栈程序员站长
2022/06/27
20.6K0
Spring 中的 @Import 注解及向容器中添加 Bean 的几种方式
这次介绍一下 Spring 中的一个重要的注解 @Import 以及向容器中添加 Bean 的几种方式 ,该注解在 SpringBoot 自动转配中起到重要的作用。
wsuo
2020/07/30
1.7K0
ggasym轻松给热图添加多个图例
R语言数据分析指南
2023/08/18
2160
ggasym轻松给热图添加多个图例
如何向已有的项目中添加C/C++代码?
  我们需要在src/main下面建立一个cpp目录,然后在其中写一个CMakeLists.txt文件和一个cpp文件,直接给出代码:
故乡的樱花开了
2023/10/22
2930
qpainter画箭头改变方向_visio如何画箭头
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
2.1K0
qpainter画箭头改变方向_visio如何画箭头
Python 中如何向列表或数组添加元素
然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。
Python学习者
2023/09/11
3580
向邮件添加附件
可以将附件添加到电子邮件或消息部分(具体地说,是添加到%Net.MailMessagePart或%Net.MailMessage的实例)。要执行此操作,请使用以下方法:
用户7741497
2022/06/09
2.1K0
2018-07-19 如何重构“箭头型”代码如何重构“箭头型”代码
原文地址:https://coolshell.cn/articles/17757.html
Albert陈凯
2018/07/24
9860
2018-07-19 如何重构“箭头型”代码如何重构“箭头型”代码
如何使用 Bootstrap class 向按钮添加下拉菜单
如何使用 Bootstrap class 向按钮添加下拉菜单。如需向按钮添加下拉菜单,只需要简单地在一个 .btn-group 容器中放置按钮和下拉菜单即可。您也可以使用 <span class="caret"></span> 来指示按钮作为下拉菜单。
好派笔记
2021/09/18
5.6K0
spring:如何用代码动态向容器中添加或移除Bean ?
先来看一张类图: 有一个业务接口IFoo,提供了二个实现类:FooA及FooB,默认情况下,FooA使用@Component由Spring自动装配,如果出于某种原因,在运行时需要将IFoo的实现,则F
菩提树下的杨过
2018/01/18
5.1K0
spring:如何用代码动态向容器中添加或移除Bean ?
质量看板开发实践(五):给echarts图例添加数值
官方文档:https://echarts.apache.org/zh/option.html#legend.formatter
冰霜
2022/05/01
3K0
matlab画图,添加图名,坐标轴名,曲线名称(图例)[通俗易懂]
matlab画完曲线图后,需要添加:图像名称(Title),坐标轴名(Label),图例(Legend)
全栈程序员站长
2022/09/28
5.6K0
matlab画图,添加图名,坐标轴名,曲线名称(图例)[通俗易懂]
点击加载更多

相似问题

如何向ggplot添加图例

11

如何向hline添加图例?

12

如何向散点图添加图例

21

向散点图添加图例

20

向绘图添加图例

129
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档