We study nonlinear diffusion problems of the form u(t) = u(xx) + f (u) with free boundaries. Such problems may be used to describe the spreading of a biological or chemical species, with the free boundary representing the expanding front. For special f (u) of the Fisher-KPP type, the problem was investigated by Du and Lin [DL]. Here we consider much more general nonlinear terms. For any f (u) which is C-1 and satisfies f(0) = 0, we show that the omega limit set omega(u) of every bounded positive solution is determined by a stationary solution. For monostable, bistable and combustion types of nonlinearities, we obtain a rather complete description of the long-time dynamical behavior of the problem; moreover, by introducing a parameter sigma in the initial data, we reveal a threshold value sigma* such that spreading (lim(t ->infinity) u = 1) happens when sigma* > sigma*, vanishing (lim(t ->infinity) u = 0) happens when sigma < sigma*, and at the threshold value sigma*, omega(u) is different for the three different types of nonlinearities. When spreading happens, we make use of "semi-waves" to determine the asymptotic spreading speed of the front.