2 things spring to mind -
1 is to react as little as possible. Do not raise your voice or 'punish' him as such. My mantra in these circumstances is 'I'm the grown up'. If he's doing something unacceptable, then calmly warn him that he'll get the standard repercussion - if you're using timeouts stick with them. Go through the motions. If he moves off the spot/step, put him back. it's tiring and frustrating, but that's the point. he's trying to see how far he has to take it for you to back down.....back down once and he'll take it to that level every time, so be consistent and calm. Let him shout, scream etc and then when he's calm, talk to him.
2 - make him clean up his mess. If he throws things, get him to pick them up (once he's calm obviously). If he takes all the sheets off his bed, get him to help you put them back on. He has to see that every action has a consequence and if he makes the mess, it's his mess to deal with.
Earl went through this and this is what I did. He's well and truly out the other side now, and he rarely has tantrums ever now - maybe 1-2 a week. He knows that they simply do not work and he helps me to clean up on an evening to earn gold stars on his chart ( a new thing we've done recently) towards a pack of sweets or a new playmobil man.
Other thing....create positive times. If he's always getting negative attention he may be a bit despondent.....allow him chances to do a good deed. Ask him to fetch something, or take his plate away, or tidy up his bricks, and make sure he knows he's done well.
It does, like all things, pass. Don't worry about him too much though - he's just a normal little boy and you need to make sure you remain consistent with him so he doesn't get confused and this passes quickly.
Hope this helps - just my own POV btw - some people probably disagree but this certainly worked with Earl.

Hope things improve soon xx