Oh yes! You do indeed...
Making it static will not affect the readability - only the accessibility as normal: you would not have access to any instance based data within the static thread.
If you have two tasks accessing the same data, then the data needs to be made thread safe - and in your case the almost certainly means locking.
The problem is that data access is not a "single instruction" process: even
i++;
is three separate operations:
1) Fetch the current value of
i
2) Add one to the value
3) Save the value to
i
And multithreading means that the thread executing the instruction could be switched out part way through and a different thread get in and modify the value between the "fetch" and the "add" operations. So when the first thread gets back in to run, it overwrites the newer version the second thread just wrote. The situation is even worse when you have threads running on separate cores, as they can really mess each other up and case horrible, horrible intermittent errors (which never seem to happen in development, but happen every day in production...)
If you are accessing the same data in different threads, you need to consider locking it for safety.