【笔记】java 多线程3 synchronized

关于synchronized ,我现在还处于学习阶段。

下面给一段实例:

复制代码
 1 public class Test extends Thread{
 2     private String name;
 3     public Test(){
 4         
 5     }
 6     public Test(String name){
 7         this.name = name;
 8     }
 9     public    void run(){
10         for(int i =0;i<5;i++){
11             System.out.println(name+"运行      "+i);
12         }
13     }
14     
15     public static void main(String[] args){
16         Test t1 = new Test("A");
17         Test t2 = new Test("B");
18         t1.start();
19         t2.start();
20     }
21 }
复制代码

结果是:

A运行 0
B运行 0
A运行 1
B运行 1
A运行 2
B运行 2
A运行 3
B运行 3
A运行 4
B运行 4

可以看出,线程A和线程B是同步执行的。

那么如果我在run()方法上加上synchronized ,那么run()方法就被加上锁。这就意味着,只有A线程执行完之后,才能轮到线程B执行。

我们在原有的代码上加上synchronized修饰符。

1 public  synchronized   void run(){
2         for(int i =0;i<5;i++){
3             System.out.println(name+"运行      "+i);
4         }
5     }

执行完之后,可以发现线程A和线程B变成异步执行了:

A运行 0
A运行 1
A运行 2
A运行 3
A运行 4
B运行 0
B运行 1
B运行 2
B运行 3
B运行 4

posted @   のんきネコ  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示