Given the database is the 'bottleneck' and not the work that the threads are doing, making all the inserts from different threads (using individual connection) will not help your performance. Especially if you do each insert in a new transaction. Every time a transaction is commit, the database needs to do work in order to ensure that data integrity is maintained. This is especially bad as all your transactions would be competing to do changes to the same object.
Instead of using multiple threads for your inserts you should make sure that you do everything in one single transaction and only commit when all the inserts are done.
BEGIN TRANSACTION;
INSERT INTO myTable (Col1, Col2) 'First' ,1;
INSERT INTO myTable (Col1, Col2) 'Second' ,2;
...
COMMIT;
N.B. - it is also possible to do all the inserts in one stament but that doesn't make a difference performance-wise:
INSERT INTO myTable (Col1, Col2)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3;
In my opinion multiple inserts grouped in a transaction are much more straightforward. Plus, the second version might yield a nested statement that is too bit for the database to handle.