diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSessionManager.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSessionManager.java
index 6f25bc8..557e9b6 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSessionManager.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/bgp/BgpSessionManager.java
@@ -15,17 +15,6 @@
  */
 package org.onosproject.sdnip.bgp;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.namedThreads;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.Executors;
-
 import org.jboss.netty.bootstrap.ServerBootstrap;
 import org.jboss.netty.channel.Channel;
 import org.jboss.netty.channel.ChannelException;
@@ -37,33 +26,44 @@
 import org.jboss.netty.channel.group.DefaultChannelGroup;
 import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
 import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpPrefix;
 import org.onlab.packet.Ip4Prefix;
 import org.onlab.packet.Ip6Prefix;
+import org.onlab.packet.IpPrefix;
 import org.onosproject.sdnip.RouteListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static java.util.concurrent.Executors.newCachedThreadPool;
+import static org.onlab.util.Tools.namedThreads;
+
 /**
  * BGP Session Manager class.
  */
 public class BgpSessionManager {
     private static final Logger log =
-        LoggerFactory.getLogger(BgpSessionManager.class);
+            LoggerFactory.getLogger(BgpSessionManager.class);
 
     boolean isShutdown = true;
     private Channel serverChannel;     // Listener for incoming BGP connections
     private ServerBootstrap serverBootstrap;
     private ChannelGroup allChannels = new DefaultChannelGroup();
     private ConcurrentMap<SocketAddress, BgpSession> bgpSessions =
-        new ConcurrentHashMap<>();
+            new ConcurrentHashMap<>();
     private Ip4Address myBgpId;        // Same BGP ID for all peers
 
     private BgpRouteSelector bgpRouteSelector = new BgpRouteSelector(this);
     private ConcurrentMap<Ip4Prefix, BgpRouteEntry> bgpRoutes4 =
-        new ConcurrentHashMap<>();
+            new ConcurrentHashMap<>();
     private ConcurrentMap<Ip6Prefix, BgpRouteEntry> bgpRoutes6 =
-        new ConcurrentHashMap<>();
+            new ConcurrentHashMap<>();
 
     private final RouteListener routeListener;
 
@@ -200,7 +200,7 @@
         //
         if (bgpSession.getLocalAddress() instanceof InetSocketAddress) {
             InetAddress inetAddr =
-                ((InetSocketAddress) bgpSession.getLocalAddress()).getAddress();
+                    ((InetSocketAddress) bgpSession.getLocalAddress()).getAddress();
             Ip4Address ip4Address = Ip4Address.valueOf(inetAddr.getAddress());
             updateMyBgpId(ip4Address);
         }
@@ -252,33 +252,33 @@
      * Starts up BGP Session Manager operation.
      *
      * @param listenPortNumber the port number to listen on. By default
-     * it should be BgpConstants.BGP_PORT (179)
+     *                         it should be BgpConstants.BGP_PORT (179)
      */
     public void start(int listenPortNumber) {
         log.debug("BGP Session Manager start.");
         isShutdown = false;
 
         ChannelFactory channelFactory = new NioServerSocketChannelFactory(
-                Executors.newCachedThreadPool(namedThreads("BGP-SM-boss-%d")),
-                Executors.newCachedThreadPool(namedThreads("BGP-SM-worker-%d")));
+                newCachedThreadPool(namedThreads("onos-bgp-sm-boss-%d")),
+                newCachedThreadPool(namedThreads("onos-bgp-sm-worker-%d")));
         ChannelPipelineFactory pipelineFactory = new ChannelPipelineFactory() {
-                @Override
-                public ChannelPipeline getPipeline() throws Exception {
-                    // Allocate a new session per connection
-                    BgpSession bgpSessionHandler =
+            @Override
+            public ChannelPipeline getPipeline() throws Exception {
+                // Allocate a new session per connection
+                BgpSession bgpSessionHandler =
                         new BgpSession(BgpSessionManager.this);
-                    BgpFrameDecoder bgpFrameDecoder =
+                BgpFrameDecoder bgpFrameDecoder =
                         new BgpFrameDecoder(bgpSessionHandler);
 
-                    // Setup the processing pipeline
-                    ChannelPipeline pipeline = Channels.pipeline();
-                    pipeline.addLast("BgpFrameDecoder", bgpFrameDecoder);
-                    pipeline.addLast("BgpSession", bgpSessionHandler);
-                    return pipeline;
-                }
-            };
+                // Setup the processing pipeline
+                ChannelPipeline pipeline = Channels.pipeline();
+                pipeline.addLast("BgpFrameDecoder", bgpFrameDecoder);
+                pipeline.addLast("BgpSession", bgpSessionHandler);
+                return pipeline;
+            }
+        };
         InetSocketAddress listenAddress =
-            new InetSocketAddress(listenPortNumber);
+                new InetSocketAddress(listenPortNumber);
 
         serverBootstrap = new ServerBootstrap(channelFactory);
         // serverBootstrap.setOptions("reuseAddr", true);
diff --git a/core/net/src/main/java/org/onosproject/event/impl/CoreEventDispatcher.java b/core/net/src/main/java/org/onosproject/event/impl/CoreEventDispatcher.java
index 8cb09aa..00538e5 100644
--- a/core/net/src/main/java/org/onosproject/event/impl/CoreEventDispatcher.java
+++ b/core/net/src/main/java/org/onosproject/event/impl/CoreEventDispatcher.java
@@ -45,7 +45,7 @@
     private final Logger log = getLogger(getClass());
 
     private final ExecutorService executor =
-            newSingleThreadExecutor(namedThreads("event-dispatch-%d"));
+            newSingleThreadExecutor(namedThreads("onos-event-dispatch-%d"));
 
     @SuppressWarnings("unchecked")
     private static final Event KILL_PILL = new AbstractEvent(null, 0) {
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 28dd3dc..292d761 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -111,7 +111,7 @@
 
     @Activate
     public void activate() {
-        backgroundService = Executors.newSingleThreadScheduledExecutor(namedThreads("device-manager-background"));
+        backgroundService = Executors.newSingleThreadScheduledExecutor(namedThreads("onos-device-manager-background"));
 
         store.setDelegate(delegate);
         eventDispatcher.addSink(DeviceEvent.class, listenerRegistry);
diff --git a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
index 3ca37cc..44f6473 100644
--- a/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
+++ b/core/net/src/main/java/org/onosproject/net/flow/impl/FlowRuleManager.java
@@ -104,7 +104,7 @@
     @Activate
     public void activate() {
         futureService =
-                Executors.newFixedThreadPool(32, namedThreads("provider-future-listeners-%d"));
+                Executors.newFixedThreadPool(32, namedThreads("onos-provider-future-listeners-%d"));
         store.setDelegate(delegate);
         eventDispatcher.addSink(FlowRuleEvent.class, listenerRegistry);
         log.info("Started");
diff --git a/core/net/src/main/java/org/onosproject/net/topology/impl/DefaultTopologyProvider.java b/core/net/src/main/java/org/onosproject/net/topology/impl/DefaultTopologyProvider.java
index b74f8b1..6137fa4 100644
--- a/core/net/src/main/java/org/onosproject/net/topology/impl/DefaultTopologyProvider.java
+++ b/core/net/src/main/java/org/onosproject/net/topology/impl/DefaultTopologyProvider.java
@@ -116,7 +116,7 @@
 
     @Activate
     public synchronized void activate(ComponentContext context) {
-        executor = newFixedThreadPool(MAX_THREADS, namedThreads("topo-build-%d"));
+        executor = newFixedThreadPool(MAX_THREADS, namedThreads("onos-topo-build-%d"));
         accumulator = new TopologyChangeAccumulator();
         logConfig("Configured");
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/HazelcastLeadershipService.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/HazelcastLeadershipService.java
index a76eb14..40e060b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/HazelcastLeadershipService.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/HazelcastLeadershipService.java
@@ -266,7 +266,7 @@
          */
         private void start() {
             isShutdown = false;
-            String threadPoolName = "leader-election-" + topicName + "-%d";
+            String threadPoolName = "onos-leader-election-" + topicName + "-%d";
             leaderElectionExecutor = Executors.newScheduledThreadPool(2,
                                         namedThreads(threadPoolName));
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/LeadershipManager.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/LeadershipManager.java
index 8a5b9f1..8581da6 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/LeadershipManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/LeadershipManager.java
@@ -74,7 +74,7 @@
 
     // TODO: Make Thread pool size configurable.
     private final ScheduledExecutorService threadPool =
-            Executors.newScheduledThreadPool(25, namedThreads("leadership-manager-%d"));
+            Executors.newScheduledThreadPool(25, namedThreads("onos-leadership-manager-%d"));
 
     private static final MessageSubject LEADERSHIP_UPDATES =
             new MessageSubject("leadership-contest-updates");
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index 83664f2..90d7d70 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -187,10 +187,10 @@
         clusterCommunicator.addSubscriber(
                 GossipDeviceStoreMessageSubjects.DEVICE_ADVERTISE, new InternalDeviceAdvertisementListener());
 
-        executor = Executors.newCachedThreadPool(namedThreads("device-fg-%d"));
+        executor = Executors.newCachedThreadPool(namedThreads("onos-device-fg-%d"));
 
         backgroundExecutor =
-                newSingleThreadScheduledExecutor(minPriority(namedThreads("device-bg-%d")));
+                newSingleThreadScheduledExecutor(minPriority(namedThreads("onos-device-bg-%d")));
 
         // start anti-entropy thread
         backgroundExecutor.scheduleAtFixedRate(new SendAdvertisementTask(),
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
index 4ed31bc..b8d3841 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/DistributedFlowRuleStore.java
@@ -146,10 +146,10 @@
 
 
     private final ExecutorService futureListeners =
-            Executors.newCachedThreadPool(namedThreads("flowstore-peer-responders"));
+            Executors.newCachedThreadPool(namedThreads("onos-flowstore-peer-responders"));
 
     private final ExecutorService backupExecutors =
-            Executors.newSingleThreadExecutor(namedThreads("async-backups"));
+            Executors.newSingleThreadExecutor(namedThreads("onos-async-backups"));
 
     private boolean syncBackup = false;
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java b/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
index 821cdc5..ed83828 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/host/impl/GossipHostStore.java
@@ -165,10 +165,10 @@
                 HOST_ANTI_ENTROPY_ADVERTISEMENT,
                 new InternalHostAntiEntropyAdvertisementListener());
 
-        executor = Executors.newCachedThreadPool(namedThreads("host-fg-%d"));
+        executor = Executors.newCachedThreadPool(namedThreads("onos-host-fg-%d"));
 
         backgroundExecutor =
-                newSingleThreadScheduledExecutor(minPriority(namedThreads("host-bg-%d")));
+                newSingleThreadScheduledExecutor(minPriority(namedThreads("onos-host-bg-%d")));
 
         // start anti-entropy thread
         backgroundExecutor.scheduleAtFixedRate(new SendAdvertisementTask(),
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
index dff3b67..279dc94 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
@@ -132,10 +132,10 @@
                 INTENT_ANTI_ENTROPY_ADVERTISEMENT,
                 new InternalIntentAntiEntropyAdvertisementListener());
 
-        executor = Executors.newCachedThreadPool(namedThreads("intent-fg-%d"));
+        executor = Executors.newCachedThreadPool(namedThreads("onos-intent-fg-%d"));
 
         backgroundExecutor =
-                newSingleThreadScheduledExecutor(minPriority(namedThreads("intent-bg-%d")));
+                newSingleThreadScheduledExecutor(minPriority(namedThreads("onos-intent-bg-%d")));
 
         // start anti-entropy thread
         //backgroundExecutor.scheduleAtFixedRate(new SendAdvertisementTask(),
diff --git a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
index 2b6c1c8..2fc9c82 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
@@ -163,10 +163,10 @@
                 GossipLinkStoreMessageSubjects.LINK_ANTI_ENTROPY_ADVERTISEMENT,
                 new InternalLinkAntiEntropyAdvertisementListener());
 
-        executor = Executors.newCachedThreadPool(namedThreads("link-fg-%d"));
+        executor = Executors.newCachedThreadPool(namedThreads("onos-link-fg-%d"));
 
         backgroundExecutors =
-                newSingleThreadScheduledExecutor(minPriority(namedThreads("link-bg-%d")));
+                newSingleThreadScheduledExecutor(minPriority(namedThreads("onos-link-bg-%d")));
 
         long initialDelaySec = 5;
         long periodSec = 5;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolClient.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolClient.java
index b796ccd..75c0969 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolClient.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolClient.java
@@ -103,7 +103,7 @@
     public synchronized CompletableFuture<Void> connect() {
         if (pool == null || pool.isShutdown()) {
             // TODO include remote name?
-            pool = newCachedThreadPool(namedThreads("copycat-netty-messaging-client-%d"));
+            pool = newCachedThreadPool(namedThreads("onos-copycat-netty-messaging-client-%d"));
         }
         return CompletableFuture.completedFuture(null);
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolServer.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolServer.java
index a60f125..aa56855 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolServer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/ClusterMessagingProtocolServer.java
@@ -62,7 +62,7 @@
     @Override
     public CompletableFuture<Void> listen() {
         if (pool == null || pool.isShutdown()) {
-            pool = newCachedThreadPool(namedThreads("copycat-netty-messaging-server-%d"));
+            pool = newCachedThreadPool(namedThreads("onos-copycat-netty-messaging-server-%d"));
         }
 
         clusterCommunicator.addSubscriber(COPYCAT_PING, new PingHandler());
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseEntryExpirationTracker.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseEntryExpirationTracker.java
index 7982d0d..4d89aa7 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseEntryExpirationTracker.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseEntryExpirationTracker.java
@@ -55,7 +55,7 @@
         DatabaseUpdateEventListener, EventHandler<LeaderElectEvent> {
 
     private static final ExecutorService THREAD_POOL =
-            Executors.newCachedThreadPool(namedThreads("database-stale-entry-expirer-%d"));
+            Executors.newCachedThreadPool(namedThreads("onos-db-stale-entry-expirer-%d"));
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseManager.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseManager.java
index 117730a..6931b66 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseManager.java
@@ -218,7 +218,7 @@
             copycat.start().get();
 
             executor =
-                    newSingleThreadScheduledExecutor(namedThreads("db-heartbeat-%d"));
+                    newSingleThreadScheduledExecutor(namedThreads("onos-db-heartbeat-%d"));
             executor.scheduleWithFixedDelay(new LeaderAdvertiser(), 5, 2, TimeUnit.SECONDS);
 
         }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseStateMachine.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseStateMachine.java
index b3cdf62..150522c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseStateMachine.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DatabaseStateMachine.java
@@ -66,7 +66,7 @@
     private final Logger log = getLogger(getClass());
 
     private final ExecutorService updatesExecutor =
-            Executors.newSingleThreadExecutor(namedThreads("database-statemachine-updates"));
+            Executors.newSingleThreadExecutor(namedThreads("onos-db-statemachine-updates"));
 
     // message subject for database update notifications.
     public static final MessageSubject DATABASE_UPDATE_EVENTS =
diff --git a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DistributedLockManager.java b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DistributedLockManager.java
index 26f4b67..c131b6e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/service/impl/DistributedLockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/service/impl/DistributedLockManager.java
@@ -53,7 +53,7 @@
 public class DistributedLockManager implements LockService {
 
     private static final ExecutorService THREAD_POOL =
-            Executors.newCachedThreadPool(namedThreads("lock-manager-%d"));
+            Executors.newCachedThreadPool(namedThreads("onos-lock-manager-%d"));
 
     private final Logger log = getLogger(getClass());
 
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
index 0024925..ed787db 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/Controller.java
@@ -137,13 +137,13 @@
 
         if (workerThreads == 0) {
             execFactory =  new NioServerSocketChannelFactory(
-                    Executors.newCachedThreadPool(namedThreads("Controller-boss-%d")),
-                    Executors.newCachedThreadPool(namedThreads("Controller-worker-%d")));
+                    Executors.newCachedThreadPool(namedThreads("onos-of-boss-%d")),
+                    Executors.newCachedThreadPool(namedThreads("onos-of-worker-%d")));
             return new ServerBootstrap(execFactory);
         } else {
             execFactory = new NioServerSocketChannelFactory(
-                    Executors.newCachedThreadPool(namedThreads("Controller-boss-%d")),
-                    Executors.newCachedThreadPool(namedThreads("Controller-worker-%d")), workerThreads);
+                    Executors.newCachedThreadPool(namedThreads("onos-of-boss-%d")),
+                    Executors.newCachedThreadPool(namedThreads("onos-of-worker-%d")), workerThreads);
             return new ServerBootstrap(execFactory);
         }
     }
diff --git a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
index 51c746f..c817b9b 100644
--- a/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
+++ b/openflow/ctl/src/main/java/org/onosproject/openflow/controller/impl/OpenFlowControllerImpl.java
@@ -69,11 +69,11 @@
 
     private final ExecutorService executorMsgs =
         Executors.newFixedThreadPool(32,
-                                     namedThreads("of-event-stats-%d"));
+                                     namedThreads("onos-of-event-stats-%d"));
 
     private final ExecutorService executorBarrier =
         Executors.newFixedThreadPool(4,
-                                     namedThreads("of-event-barrier-%d"));
+                                     namedThreads("onos-of-event-barrier-%d"));
 
     protected ConcurrentHashMap<Dpid, OpenFlowSwitch> connectedSwitches =
             new ConcurrentHashMap<Dpid, OpenFlowSwitch>();
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
index 6aefaed..57c1e7a 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
@@ -161,7 +161,7 @@
             }
         }
 
-        executor = newSingleThreadScheduledExecutor(namedThreads("device-sync-%d"));
+        executor = newSingleThreadScheduledExecutor(namedThreads("onos-device-sync-%d"));
         executor.scheduleAtFixedRate(new SyncDeviceInfoTask(), INIT_DELAY,
                 DELAY, TimeUnit.SECONDS);
 
diff --git a/providers/null/device/src/main/java/org/onosproject/provider/nil/device/impl/NullDeviceProvider.java b/providers/null/device/src/main/java/org/onosproject/provider/nil/device/impl/NullDeviceProvider.java
index 5143525..3b650013 100644
--- a/providers/null/device/src/main/java/org/onosproject/provider/nil/device/impl/NullDeviceProvider.java
+++ b/providers/null/device/src/main/java/org/onosproject/provider/nil/device/impl/NullDeviceProvider.java
@@ -73,7 +73,7 @@
     private DeviceProviderService providerService;
 
     private ExecutorService deviceBuilder = Executors.newFixedThreadPool(1,
-                                                     namedThreads("null-device-creator"));
+                                                     namedThreads("onos-null-device-creator"));
 
 
     //currently hardcoded. will be made configurable via rest/cli.
diff --git a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
index c12991a..1caac54 100644
--- a/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
+++ b/providers/null/link/src/main/java/org/onosproject/provider/nil/link/impl/NullLinkProvider.java
@@ -93,7 +93,7 @@
     private final List<DeviceId> devices = Lists.newArrayList();
 
     private ExecutorService linkDriver = Executors.newFixedThreadPool(1,
-            namedThreads("null-link-driver"));
+            namedThreads("onos-null-link-driver"));
 
     // If true, 'flickers' links by alternating link up/down events at eventRate
     @Property(name = "flicker", boolValue = FLICKER,
diff --git a/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java b/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
index 2f63952..1b41d55 100644
--- a/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
+++ b/providers/null/packet/src/main/java/org/onosproject/provider/nil/packet/impl/NullPacketProvider.java
@@ -83,7 +83,7 @@
     private int pktRate = DEFAULT_RATE;
 
     private ExecutorService packetDriver = Executors.newFixedThreadPool(1,
-            namedThreads("null-packet-driver"));
+            namedThreads("onos-null-packet-driver"));
 
     public NullPacketProvider() {
         super(new ProviderId("null", "org.onosproject.provider.nil"));
