No you don't need to use ThreadLocal here - your code looks perfectly fine:
lineCnt
is a local variable which is therefore not shared across thread => it is thread safecounter.getAndAdd(lineCnt);
is an atomic and thread safe operation
If you are interested, there are several posts on SO about the use of ThreadLocal, such as this one.