JAVA线程相互排斥问题

JAVA线程相互排斥问题

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

public class TraditionalThreadSynchonized {

	public static void main(String[] args) {

		final OutPuter output = new TraditionalThreadSynchonized().new OutPuter();
		new Thread(new Runnable() {

			@Override
			public void run() {

				while (true) {
					try {
						Thread.sleep(1000);
						output.output("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}).start();

		new Thread(new Runnable() {

			@Override
			public void run() {

				while (true) {
					try {
						Thread.sleep(1000);
						output.output("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}).start();

	}

	class OutPuter {

		public void output(String name) {
			for (int i = 0; i < name.length(); i++)
				System.out.print(name.charAt(i));
			System.out.println();
		}
	}

}

代码执行结果例如以下:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AA
BBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

改动Oupter类就可以达到相互排斥效果:

class OutPuter {

		public void output(String name) {

			synchronized (this) {
				for (int i = 0; i < name.length(); i++)
					System.out.print(name.charAt(i));
				System.out.println();
			}

		}
	}

执行效果例如以下

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

很多其它内容请关注小猿公众号
JAVA线程相互排斥问题love_coding

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118138.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 047 Python面试知识点小结

    047 Python面试知识点小结一.Python基础1.Python语言特性:动态型(运行期确定类型,静态型是编译型确定类型),强类型(不发生隐式转换,弱类型,如PHP,JavaScript就会发生隐患式转换)2.Python

    2022年7月5日
    25
  • 阿里短信服务集成_阿里短信发送平台

    阿里短信服务集成_阿里短信发送平台阿里短信集成,配置流程,代码实现

    2025年7月22日
    4
  • 新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧

    新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧更新时间:2013-5-30新手如何快速上手双拼,提高打字速度首先说明,此文仅供参考,每个人需要选择适合自己的方法~纵然效率很重要,终究多练是王道。亲们加油吧……一个月从零开始到速度过百真心不难的。第一,双拼方案选择。(1)如果你已经熟练了某种双拼方案,其实没什么必要去更换——条件反射的更改比建立还要难,需要一…

    2022年6月16日
    47
  • 从零开始学Android_数学从零开始要学多久

    从零开始学Android_数学从零开始要学多久1环境搭建如果可以翻墙,环境搭建不是什么大问题,如果不能翻墙,则搭建环境比较困难。首先,我们根据网上的教程安装JDK。然后安装Androidstudio,最后进行一些配置,具体可以参考如下链接:https://jingyan.baidu.com/article/36d6ed1f9031bc1bcf4883f7.html。如果是国内环境,需要配置相关的国内镜像和仓库。有条件的话还是选择VPN的方…

    2022年4月20日
    43
  • msdos分区是什么_msdos_partition

    msdos分区是什么_msdos_partition硬盘分区及格式化本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘/dev/vdb上按以下要求建立分区:采用默认的msdos分区模式1、第1个分区/dev/vdb1的大小为200MiB2、第2个分区/dev/vdb2的大小为2000MiB3、第3个分区/dev/vdb3的大小为1000MiB,完成分区后4、能够配置开机自动挂载/dev/vdb2分区…

    2022年8月11日
    8
  • jQuery资源

    jQuery资源

    2021年7月24日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号