質問のタイトル通りに非同期処理と並列処理の使い分けが知りたいです。
質問ですがコメントでここのコードを書いてある部分のコードは非同期か並列のどちらの処理のコードか教えて欲しいです。

class Program 
    {       
        static public async Task Threadmethod(int a,int b)
        {
            await Task.Run(() => {
            Thread.Sleep(6000);

            Console.WriteLine("finish");

            return a + b;
            //return x + y;
            });
        }

        static public void f()
        {
            Console.WriteLine("a");
        }

        static void Main(string[] args)
        {
            //このコード
            Task tt = Task.Run(()=> { Console.WriteLine("run run "); });

            Task t = Threadmethod(4,5);

            Parallel.Invoke(()=> { Console.WriteLine("aaa");
            },f);

            while(true)
            {
                Console.WriteLine("main");
                Thread.Sleep(1000);

            }

            Console.ReadKey();
        }
    }