服务器之家

服务器之家 > 正文

浅析Java多线程同步synchronized

时间:2021-04-08 14:08     来源/作者:彬菌

单线程是安全的,因为线程只有一个,不存在多个线程抢夺同一个资源

代码例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class SingleThread {
    int num=10;
    public void add(){
        while(num<13){
            num++;
            try{
                Thread.sleep(1000);
            }
            catch(Exception e){
                System.out.println("中断");
            }
            System.out.println(num);
        }
    }
    public static void main(String[] args){
        Thread thread = Thread.currentThread(); //获取当前运行的线程对象
        thread.setName("单线程"); //线程重命名
        System.out.println(thread.getName()+"正在运行");
        SingleThread st=new SingleThread();
        st.add();
    }
}

多线程安全,synchronized同步代码块

synchronized(对象){}; //同步代码块

synchronized 返回值 方法名(){}; //同步方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class One {
     int num=10;
     public void add(){
        synchronized(this){ //同步代码块,同步方法也可以实现效果synchronized void add(){};
        num++;
      try {
       Thread.sleep(1000);
      } catch (InterruptedException e) {
        System.out.println("中断");
      }
      System.out.println(num);
      }
     }
    }
    class Two implements Runnable{
     One one = new One();
     @Override
     public void run() {
         one.add(); //调用add方法
     }
    }
    public class Synch{
     public static void main(String[] args) {
        Two two = new Two();
      Thread t1 = new Thread(two); //创建三个子线程
      Thread t2 = new Thread(two);
      Thread t3 = new Thread(two);
      t1.start();
      t2.start();
      t3.start();
     }
}

注意:观察去除synchronized关键字的运行结果区别!

正常运行结果:

11
12
13

原文链接:https://www.idaobin.com/archives/839.html

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部