线程基础

每个对象持有一把锁,两个对象互不干涉

9E38B53A-028D-4bf0-A994-1F2FEB535DEB.png
/**
 * @Description TODO
 * @Author "zhouhai"
 * @Date2018/10/716:01
 **/
public class MultiThread {

    private int num = 0;

    public synchronized void prinNum(String tag) {
        try {
            if (tag.equals("a")) {
                num=100;
                System.out.println("tag a ,set num over!");
                Thread.sleep(1000);
            }else {
                num = 200;
                System.out.println("tag b, set num over!");
            }
            System.out.println("tag"+tag+",num="+num);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        //俩个不同的对象
        final MultiThread m1 = new MultiThread();
        final MultiThread m2 = new MultiThread();

        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                m1.prinNum("a");
            }
        });
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                m2.prinNum("b");
            }
        });

        t1.start();
        t2.start();


    }

}

代码运行结果:
tag a ,set num over!
tag b, set num over!
tagb,num=200
taga,num=100

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 本次主要介绍java多线程中的同步,也就是如何在java语言中写出线程安全的程序。如何在java语言中解决非...
    小人物灌篮阅读 505评论 0 1
  • 为什么使用多线程 可以最大限度地利用CPU的空闲时间来处理其它任务。异步处理不同的任务,提高任务处理效率。 线程的...
    零度沸腾_yjz阅读 389评论 0 4
  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 4,807评论 12 45
  • 我近期最想实现的目标是2018年4月30日前,可以得到3万元现金收入,所以我的咖啡冥想内容如下: 1.为潜在合作者...
    田圆0618阅读 134评论 0 0
  • 分享书籍:《每天懂一点色彩心理学·实用篇》[日] 原田玲仁 色彩除了我们通常意义上的认知外,其实还有很多鲜有人知的...
    萌兔兔at重庆阅读 400评论 4 3