Thread VB.Net Tutorial

Imports System.Threading
Module Module1
    Public Buffer As Integer
    Public BufferEmpty As Boolean = True
    Sub Producer()
        Dim Value As Integer = 0
        Do
            If (BufferEmpty) Then
                BufferEmpty = False
                Buffer = Value
                If (Value = 0) Then
                    Value = 1
                Else
                    Value = 0
                End If
                Console.WriteLine("Producer: " & Buffer)
            End If
        Loop While (True)
    End Sub
    Sub Consumer()
        Dim Value As Integer
        Do
            If (Not BufferEmpty) Then
                BufferEmpty = True
                Thread.CurrentThread.Sleep(1000)
                Value = Buffer
                Console.WriteLine("Consumer: " & Value)
            End If
        Loop While (True)
    End Sub
    Sub Main()
        Dim ProducerThread As Thread
        Dim ConsumerThread As Thread
        ProducerThread = New Thread(AddressOf Producer)
        ConsumerThread = New Thread(AddressOf Consumer)
        ProducerThread.Start()
        ConsumerThread.Start()
    End Sub
End Module
Producer: 0
Producer: 1
Consumer: 1
Producer: 0
Consumer: 0
Producer: 1
Consumer: 1
Producer: 0
Consumer: 0
Producer: 1
^CTerminate batch job (Y/N)? n