**github地址:**https://github.com/lishanglei/thread-demo.git
多个线程同时操作一个实例,synchronized可以锁this对象,因为只有一个实例,在所有锁中是唯一的.
@Test public void test4() { Ticket ticket = new Ticket(); //一个实例,三个线程 FutureTask futureTask1 = new FutureTask(ticket); FutureTask futureTask2 = new FutureTask(ticket); FutureTask futureTask3 = new FutureTask(ticket); Thread t1 = new Thread(futureTask1,"窗口一"); Thread t2 = new Thread(futureTask2,"窗口二"); Thread t3 = new Thread(futureTask3,"窗口三"); t1.start(); t2.start(); t3.start(); } 多个线程同时操作多个实例,synchronized必须锁静态变量,因为有多个实例,只有静态变量在多个线程中共用的是唯一的
@Test public void test5(){ Ticket ticket1 = new Ticket(); Ticket ticket2 = new Ticket(); FutureTask futureTask1 = new FutureTask(ticket1); FutureTask futureTask2 = new FutureTask(ticket2); Thread t1 = new Thread(futureTask1,"窗口一"); Thread t2 = new Thread(futureTask2,"窗口二"); t1.start(); t2.start(); }