T.H.
Our son started this behavior at about the same time. We said "no throwing" and tried redirecting many times to no avail. Finally, we decided that as soon as something was thrown (he's only allowed to throw balls in the house), we would say "no throwing" and we would remove that toy immediately (sometimes by asking him to show us how he can gently put it away). If he was persistent and began throwing one toy after another, we'd put him in time out (general rule is one minute per year of age). Time out usually would calm him down. Now when he throws, he will often put himself in time out. When he does that, I let him sit as long as he wants and then I thank him for getting himself under control. When my son hits, he goes directly into time out. Hitting is not tolerated and he knows that.
Another thing that has helped us is teaching him to take a deep breath when he's frustrated or wound up. I know it sounds ridiculous for this age group, but it really works for my son. I will hold him gently and ask him to take three deep breaths with me. This is a nice alternative to time outs if he doesn't seem to be calming otherwise. My son likes doing it and it seems to distract him from whatever was making him upset. I think it's a good coping mechanism for him to have in his pocket for the long run. Good luck!