初学线程,求教,该如何解决

初学线程,求教
相写个ftp更新程序,功能如下:
1.检索本地文件目录
2.检索ftp服务器文件目录
3.比较差异文件
4.下载差异文件到临时目录
5.从临时目录更新到本地正式目录,并完成日志

以上功能,非线程已经实现,想提高效率,采用多线程。
如何实现?
比如第1、2步应该可以同时做,
第3、4、5步也应该可以同时做。
如何实现??? 求教 
------最佳解决方案--------------------
先百度百度
------其他解决方案--------------------
可否把源码发我一份, 我也想写个做网站备份。
------其他解决方案--------------------
发我一起写,多线程我写,一起完成就好了。
------其他解决方案--------------------
还等着多线程,如何实现呢
------其他解决方案--------------------
1.检索本地文件目录

procedure FindLocalFiles(disk, path: string; var filename, filetime: Tstrings);
const
  Model = 'yyyy/mm/dd,hh:mm:ss';
var
  fpath, s: string;
  fs: TsearchRec;
begin
  fpath := disk + path + '\*.*';
  if FindFirst(fpath, faAnyFile, fs) = 0 then
  begin
    if (fs.Name <> '.') and (fs.Name <> '..') then
      if (fs.Attr and faDirectory) = faDirectory then
        FindLocalFiles(disk, path + '\' + fs.Name, filename, filetime)
      else
      begin
        filename.add(path + '\' + fs.Name);
        filetime.Add(FormatDateTime(Model,
          CovFileDate(fs.FindData.ftLastWriteTime)));
      end;
    while findnext(fs) = 0 do
    begin
      if (fs.Name <> '.') and (fs.Name <> '..') then
        if (fs.Attr and faDirectory) = faDirectory then
          FindLocalFiles(disk, path + '\' + fs.Name, filename, filetime)
        else
        begin
          begin
            filename.add(path + '\' + fs.Name);
            filetime.Add(FormatDateTime(Model,
              CovFileDate(fs.FindData.ftLastWriteTime)));
          end;
        end;
    end;
  end;
  Findclose(fs);
end;

------其他解决方案--------------------
2.检索ftp服务器文件目录

procedure FindRemoteFiles(var idFTP: TIdFtp; RemoteDirectory: string; var
  filename,
  filetime: Tstrings);
const
  Model = 'yyyy/mm/dd,hh:mm:ss';
var
  i, DirCount: integer;
  sName: string;