首页 > 代码库 > java多线程(2) 线程同步

java多线程(2) 线程同步

我们对线程访问同一份资源的多个线程之间,来进行协调的这个东西,就是线程同步。
 
例子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 t2 = 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的线程");
    }
}
View Code
两个线程访问的都是time对象;访问的都是time对象中的add方法;
但是console打印出来是:
技术分享
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

java多线程(2) 线程同步