Bit of a while since, I have been busy with various projects, but I just wanted to post back with a solution that I was happy with.
This solution makes no use of multi-threading and having looked into in it should provide some speed improvements when generating the grid itself.
Currently the solution I implemented was to use canvas and a PImage to store the perlin grid.
When update is on the grid draws all tiles to the canvas, just once then once completed the get() function is used to grab the canvas image. This produces something which is able to run 60fps no problem along all renderers, when fully loaded, and runs at around 20fps on FX2D when loading which is still acceptable.
This new method also allows greater resolution and size for the map;.
Also as per Sebastian Lagues suggestion in his procedural generation playlist, I have added frequency amplitute, octaves, lacunarity and persistance to increase the diversity that one can create with the grid.
Still 2d at the moment, but in combination with a sobel operator we can now have edges useable in real time withought any performance issues as the are once again calculated only once.
I shall hopefully try to complete this to add the other things from Sebastians playlist, eg chunks, shaders etc.
https://www.youtube.com/results?search_query=sebastian+lague+procedural