diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index 0d0dd1b..d8d0ecb 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -107,6 +107,25 @@
             {
                 updateValue(nvalue);
             }
+            if (!thresholds.empty())
+            {
+                std::vector<thresholds::Threshold> newThresholds;
+                if (parseThresholdsFromAttr(newThresholds, path,
+                                            CPUSensor::sensorScaleFactor))
+                {
+                    if (!std::equal(thresholds.begin(), thresholds.end(),
+                                    newThresholds.begin(), newThresholds.end()))
+                    {
+                        thresholds = newThresholds;
+                        thresholds::updateThresholds(this);
+                    }
+                }
+                else
+                {
+                    std::cerr << "Failure to update thresholds for " << name
+                              << "\n";
+                }
+            }
             errCount = 0;
         }
         catch (const std::invalid_argument&)
diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index 725829e..49dca1f 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -162,6 +162,53 @@
     }
 }
 
+void updateThresholds(Sensor* sensor)
+{
+    if (sensor->thresholds.empty())
+    {
+        return;
+    }
+
+    for (const auto& threshold : sensor->thresholds)
+    {
+        std::shared_ptr<sdbusplus::asio::dbus_interface> interface;
+        std::string property;
+        if (threshold.level == thresholds::Level::CRITICAL)
+        {
+            interface = sensor->thresholdInterfaceCritical;
+            if (threshold.direction == thresholds::Direction::HIGH)
+            {
+                property = "CriticalHigh";
+            }
+            else
+            {
+                property = "CriticalLow";
+            }
+        }
+        else if (threshold.level == thresholds::Level::WARNING)
+        {
+            interface = sensor->thresholdInterfaceWarning;
+            if (threshold.direction == thresholds::Direction::HIGH)
+            {
+                property = "WarningHigh";
+            }
+            else
+            {
+                property = "WarningLow";
+            }
+        }
+        else
+        {
+            continue;
+        }
+        if (!interface)
+        {
+            continue;
+        }
+        interface->set_property(property, threshold.value);
+    }
+}
+
 bool checkThresholds(Sensor* sensor)
 {
     bool status = true;
