I have not looked deep, but looking at your code I can see that these 3 instance fields:
private double values[];
private int columnIndices[];
private int rowPointers[];
are shared (since they are instance fields). This means that if you provide a way to alter them, you could have issues. I mean, you call getRow in one thread, while another thread changes their contents. Of course you might have problems.
If you do not alter them (you only need to know them at creation time), make them final and set them in your constructor. And do not provide any means (methods) of changing their contents, thus making the class Immutable; thus Thread Safe.
Otherwise simple make your method synchronized.
Also, you will share an instance, and not the class. One more point, is it's always about the writers to your shared data and not the readers. Writers alter your instances, not readers.