He was undrafted out of suburban Pittsburgh Fox Chapel Area High School. Thomas played for the Cleveland Jr. Barons of the NAHL and Tri-City Storm of the USHL. He also played for the University of Nebraska at Omaha Mavericks for two years, leading them to their first NCAA Division I hockey tournament appearance. After playing in the 2006 NCAA Men's Division I Ice Hockey Tournament, Thomas signed his first professional contract on March 26, 2006 with the Phoenix Coyotes a few days after the Mavericks were eliminated from the tournament in the first round. Thomas played 47 games for the Phoenix Coyotes' AHL affiliate, the San Antonio Rampage, in the 2006–07 season. He led the Rampage in goals in the 2007–08 season until he was also called up to the NHL for 24 games with the Coyotes during the same year. After the season Thomas signed a one-year contract with the Penguins on July 15, 2008. William scored his first goal with the Penguins, his hometown team, against the San Jose Sharks on February 11, 2009. On September 13, 2009, Thomas accepted an invite to the Toronto Maple Leafs' pre-season training camp on a tryout basis only to be subsequently released from the Maple Leafs on September 19, 2009. During the 2009–10 season, on November 3, 2009, Thomas then signed a Professional Try-out Agreement with the Springfield Falcons. After scoring 17 points in 33 games with the Falcons, he was released from his P.T.O on January 22, 2010, to join HC Lugano of the Swiss National League A for the remainder of the season. William returned to North America following the conclusion of the season with Lugano to sign a one-year contract with the Florida Panthers on July 2, 2010. Assigned to the Panthers' AHL affiliate, the Rochester Americans, Thomas led the team in goals to start the 2010–11 season, before he was recalled to make his Panthers debut and first NHL return in two seasons, against the New York Islanders on November 20, 2010. Thomas tied a career high to appear in 24 games with the Panthers, scoring 7 points. In the following 2011–12 season, Thomas attended the Panthers training camp without a contract. Reassigned to new AHL affiliate and previous AHL team, the San Antonio Rampage, Thomas later earnt a one-year deal for the remainder of the season with Florida on December 20, 2011. With only 7 games with the Panthers, Thomas matched his last season with the Rampage in 2008 to tie a career-high with 52 points. On July 3, 2012, Thomas signed as a free agent to a one-year contract with the Colorado Avalanche. With the NHL lockout coming to affect, Thomas was assigned directly by the Avalanche to AHL affiliate, the Lake Erie Monsters. During the duration of the 2012–13 season, Thomas provided a veteran presence for the Monsters and featured in every game to lead the team with 22 goals. On June 14, 2013, Thomas signed his second contract abroad with a one-year contract with KHL Medveščak Zagreb from Croatia, the newest member of Kontinental Hockey League. After two seasons in the KHL in Zagreb, Thomas left as a free agent to sign a one-year contract in the Swedish Hockey League with Modo Hockey on June 22, 2015. In the 2015–16 season, Thomas added 12 goals and 22 points in 48 games, however was unable to help keep Modo in the SHL, losing in relegation to the HockeyAllsvenskan. On June 24, 2016, having left Modo as a free agent, Thomas agreed to a one-year contract with Austrian club, EC Red Bull Salzburg of the EBEL. On November 30, 2017, Thomas signed a one-month try-out contract with the Finnish club Ilves Tampere of the Liiga. After spending a month with Ilves, on the January 2, 2018 he was introduced as a new forward of German club, Kölner Haie of the Deutsche Eishockey Liga.