java多線程(2) 線程同步
阿新 • • 發佈:2017-07-04
setname 我們 可能 pac 對象 try 資源 spl main 我們對線程訪問同一份資源的多個線程之間,來進行協調的這個東西,就是線程同步。
例子1:模擬了多個線程操作同一份資源,可能帶來的問題:
package com.cy.thread; public class TestSync implements Runnable{ Timer timer = new Timer(); public static void main(String[] args) { TestSync test = new TestSync(); Thread t1 = new Thread(test); Thread t2View Code 兩個線程訪問的都是time對象;訪問的都是time對象中的add方法; 但是console打印出來是:= new Thread(test); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); } @Override public void run() { timer.add(Thread.currentThread().getName()); } } class Timer{ private static int num = 0; public void add(String name){ num++; try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(name+",你是第"+num+"個使用timer的線程"); } }
java多線程(2) 線程同步