Thread-safe Bloom Filter in Java
The locking looks fine, but there are a couple of things which look fishy in the code.

Firstly,

            if (index &lt; 0)
                index = -index;


This should surely be present in both methods or in neither? But it's only in the second one.

Secondly,

            int offset = (i - 1) * filterParams.bucketLength;


It seems that each derived hash is stored in a non-overlapping bucket. By my understanding of Bloom filters, what you have here isn't a Bloom filter.

Finally, I suggest for your consideration unrolling the multiplications:

        long hash = hash1;
        for (int i = 1, offset = 0; i &lt;= filterParams.k; i++) {
            hash += hash2;

            int mod = ( int ) ( hash % filterParams.bucketLength );
            int index = offset + mod;

            bitSet.set(index);

            offset += filterParams.bucketLength;
        }


This saves a bit of thought as to "why does it multiply by i to calculate hash but by i-1 to calculate offset?".