The thing that we coordinate between multiple threads that thread access to the same resource is thread synchronization. Example 1: Simulates multiple threads operating on the same resource, which may pose problems:
PackageCom.cy.thread; Public classTestsyncImplementsrunnable{Timer Timer=NewTimer (); Public Static voidMain (string[] args) {testsync test=NewTestsync (); Thread T1=NewThread (test); Thread T2=NewThread (test); T1.setname ("T1"); T2.setname ("T2"); T1.start (); T2.start (); } @Override Public voidrun () {Timer.add (Thread.CurrentThread (). GetName ()); }}classtimer{Private Static intnum = 0; Public voidAdd (String name) {num++; Try{Thread.Sleep (1); } Catch(interruptedexception e) {e.printstacktrace (); } System.out.println (Name+ "You are the first" +num+ "thread using a timer"); }}
View CodeAll two threads access the time object, and the access is the Add method in the time object, but the console prints:
Java Multithreading (2) thread synchronization