几百年没更新了,贴段东西,证明还活着。 using System; using System.Collections.Generic; using System.Text; using System.Threading; class TH { public static void Main(String[] args) { Console.WriteLine("Hello World!"); TH th = new TH(); /* ThreadStart ts = new ThreadStart(th.process); Thread t1 = new Thread(ts); Thread t2 = new Thread(ts); Thread t3 = new Thread(ts); */ Thread t1 = new Thread(new ThreadStart(th.process)); Thread t2 = new Thread(new ThreadStart(th.process)); Thread t3 = new Thread(new ThreadStart(th.process)); t1.Start(); t2.Start(); t3.Start(); } object stateObj = new object(); int money = 200; private void withDraw(int m) { var idle = (new Random()).Next(100)+10; Thread.Sleep(idle); this.money -= m; debug("withDraw "+m); } private void save(int m) { var idle = (new Random()).Next(100)+10; Thread.Sleep(idle); this.money += m; debug("save "+m); } public void process() { for (int i=0;i<30 ;i++ ) { var r = new Random(); int d = r.Next(100)+100; lock (stateObj) { if (this.money>=d) { withDraw(d); } } save(r.Next(100)); } } private void debug(string str) { Console.WriteLine(str + "/t remain:"+this.money+"/t currentThread"+Thread.CurrentThread.ManagedThreadId); if(this.money<0){Console.WriteLine("-------------------------------------");}; } }