Yes, they are shared by every application, independent of threads . For this reason, static data is inherently not thread-safe .
One of the reasons people say to avoid using it, or when it does, is to do it safely, taking care to synchronize access.
I think it's obvious, at least for this aspect, that static objects are not problematic if you do not have more than one thread in the application.
The static property value will always be the last assigned by any of the threads . At the time of the change all the threads see the new value immediately since it is the same location.
Note that in WebAPI requests, depending on how you are configured, you may be running different instances of the application. That is, different processes, there is no communication between them.
If you want to create a static class like gambiarra to fix a current design issue, I would recommend not doing so. Static classes are great when they make sense, when they are really unique things that should be global. You need to have a semantics (there are several) to justify their use.
The concrete problem is not yet clear. So it's hard to say if this case can be solved well with the use of a static class. But it seems to me that the thread pool of the WebAPI can be a complicator and I would not use it.