Imports System Imports System.Threading Public Class List1 ' 2つのATMThreadクラスから1つのBankクラスにアクセスする。 Public Shared Sub Main() Dim bank As New Bank() Dim atmA As New AtmThread("A", bank) atmA.Start() Dim atmB As New AtmThread("B", bank) atmB.Start() End Sub 'Main End Class 'List1 ' 預金残高(balance)を保持するBankクラス Class Bank Private _balance As Integer = 1000 Public Property Balance() As Integer Get Return _balance End Get Set _balance = value End Set End Property End Class 'Bank ' 預金の出し入れを行うスレッドクラス ' スレッドを使用している。 Class AtmThread Private name As String Private bank As Bank Public Sub New(name As String, bank As Bank) Me.name = name Me.bank = bank End Sub 'New Public Sub Start() Dim thread As New Thread(New ThreadStart(AddressOf ThreadMethod)) thread.Start() End Sub 'Start Private Sub ThreadMethod() Dim balance As Integer = bank.Balance Thread.Sleep(1000) ' わざと競合を起こすため bank.Balance = balance + 200 Console.WriteLine("{0}: balance + 200 = {1}", name, balance + 200) End Sub 'ThreadMethod End Class 'AtmThread