It is a personal choice. If the traffic is adequate or less than obviously the first approach is better. It is thread-safe, thanks to thread confinement. Easier to maintain. The only issue is that - if an extra port is added then you will have to modify the code for an extra if clause.
But under heavy traffic, this might be better. Lesser packets will be lost if the buffer is full. Might perform better depending upon the number of cores but again can be buggy if not executed well.
If I were you, I would have gone ahead with the first one. Keep it simple.