We took a cruise from Tampa to Cozumel, Mexico and Grand Cayman Islands in 2014. I ended up in the sick bay and in a Mexican hospital which confirmed my dislike of cruises in general but my 4 year-old ASD daughter did pretty well. Tell them to let your family bypass the line to board if your son can't wait in a line. We opted for the flexible dining time to make sure she wasn't in meltdown mode. My wife got us a separate table from other guests after telling the crew my daughter may not be the best dinner guest. There's a wide array of food choices so your kid find something to eat.
The ship is a controlled environment but you still need to keep an eye on your kid. The ship had place for kids but you need to tell the cruise line that your kid may need extra attention. The kids liked playing in the kids place which I never got to see.
We had leave the cruise and stay in Cozumel because they thought I might have a heart attack (it was heartburn). On shore it was a different set of issues. My daughter fell in the pool but my wife got her out. My daughter was saying "Oh my gosh! Oh my gosh!" because she'd never underwater before so maybe it scared her a little which may make her more cautious in the future. Most people can't tell when someone is drowning next to them so I'm always on edge around water over my head that is accessible. Luckily, the kids like Mexican food and enjoyed going to the beach. We did get ripped off on a $50 breakfast that no one but me ate because our daughter had a meltdown so they left.