ffmpeg supports threads, see the -threads option. This is unlikely to provide a linear increase in performance, however. I would rather run one instance per cpu/core.
The problem with using a simple & is that you lose control over how many intances are started. Running more instances than you have cpus will slow things down. The shell doesn't have any builtin support for doing this, though there are ways to work around it.
Alternatively, you could always write a little Makefile and use make -j N. This will also have the advantage of skipping files that have already been encoded.
files:= $(patsubst %.flac,%.m4a,$(wildcard *.flac))
%.m4a : %.flac
@ffmpeg -i $< -acodec alac $@
edit: you need to make sure that the '@ffmpeg ...' line is indented with a tab, since the tab is expanded to spaces when posted/pasted.