多线程synchronized用法

Java线程同步机制
本文通过一个具体的Java示例展示了如何使用synchronized关键字实现线程间的同步操作,防止多个线程同时修改同一资源导致的数据不一致问题。文章通过两个线程不断输出不同字符串的方式,演示了synchronized的作用和必要性。
package com.x.test;



/**
 * @author lelonta
 * @version 1.0
 */
public class threadsynchronized {

    public static void main(String[] args) {

        //调用init方法
        new threadsynchronized().init();
    }

    public void init() {

        //内部类不能在静态方法中创建对象
        final Outputer outputer = new Outputer();
        //内部类访问局部变量
        new Thread(new Runnable() {

            @Override
            public void run() {

                while (true) {

                    try {
                        Thread.sleep(10);
                    } catch (Exception e) {

                    }
                    outputer.output("hehe");
                }
            }
        }).start();

        new Thread(new Runnable() {

            @Override
            public void run() {

                while (true) {

                    try {
                        Thread.sleep(10);
                    } catch (Exception e) {

                    }
                    outputer.output("haha");
                }
            }
        }).start();


    }

    class Outputer {

        public void output(String name) {

            int len = name.length();

            synchronized (this) {
                //synchronized 实现了代码的互斥
                // 及在有线程访问同一个资源的时候另一个线程必须等待
                //就如厕所的坑一样 一个人占着 另一个人或者其他人必须等用的人用完才能用
                //传的对象必须是唯一的
                //name不行 因为name可以传不同的参数
                //this 可以防止在外部调用 outputer 的方法不同
                //例如 outputer.output("hehe");
                //     new Outputer.output("hehe");
                for (int i = 0; i < len; i++) {

                    System.out.print(name.charAt(i));
                }
                System.out.println();
            }

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观的Terry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值