Class member method based multithreading [C++]
I think you have an OK approach, however it's hard to tell if it's going to work for you because at the moment you seem to be at concept phase.  As you develop the application, you may find that having different methods for different thread loops may mean your class is responsible for too much.  I tend to prefer to have a class for each thread I create, which has a main thread function.  An example of which would be the WorkerThread in this question I posted.

Nested scopes in functions

As far as your coding style goes, I'm not super keen on the way you're using braces to create scoping for your mutex uses:

{
    std::lock_guard&lt;std::mutex&gt; lck(mtx);
    value1 = 0; value2 = 0; value3 = 0;
}


I'd be inclined to create a function with a name if I felt like I needed to have the extra scoping and put the body into it.  Your run method also re-initializes the values even these have been set in the constructor, it's unclear if this is on purpose or not.

Global Mutex

You've got std::mutex mtx; as a global.  If you're only going to be using it from within your AThreadedClass, it would be better as a static class member.  I'd also update its name to reflect what it is it's used to lock.

Atomic Vs Volatile

Whilst atomic is the safe option for running, I'm not sure you really need it to be atomic.  You never update its value outside of the mtx lock.  I would expect that marking it as volatile should be enough to prevent the compiler from optimizing out the checks in the while loops.