Hi S.,
You have received a lot of good advice. I have a 5 1/2 year old and a 2 year old, both boys. My 5 year old was the same way at 3 and 4 years old. It got better towards the end of 4 years and beginning of 5, and CONSISTENCY is definitley key, that and PATIENCE, LOTS OF PATIENCE. Believe me, I know, my little guy is very stubborn and threw many of tantrums and still does occasionally. There was a period of time where I yelled at him a lot. I noticed when I stopped yelling as much the tantrums became less. Praising an rewarding him for good behavior is big! Time outs will work, but you have to stick to it, my son would throw himself from the chair and yell at me, and I would put him right back, over and over and over again, and I would tell him that we would keep doing this until he sat there for a total of 3 to 5 minutes (a minute a year of their age). I set a timer for him. It took a while, but he doesn't fight his time outs anymore, nor does he get them as often.
Public tantrums are harder, but sometimes you just got to leave your cart and march right out of the store, every parent who sees you do this, knows the drill. You are in charge, do not give in to the tantrums, I know, easier said than done, and sometimes we do give in depending on the circumstance, and if you have to, it's okay, but try not to let it happen too often. It will get better and hopefully sooner than later, persistence and patience are key. My 5 year old is way better now, and believe me, he was a total nightmare! One other thing, right now we use a point system, he gets points for good behavior, for cleaning up, listening, or being good at the store, etc. He gets points taken away for bad behavior, then when gets a certain amount of points, he gets to pick out a toy or something, it is working really good for now. I also change the way I reward him every couple of months or when he seems lose interest in the system, it keeps it fun and new... because of this, he also is showing a big interest in numbers and adding. Good luck to you!!!