[java网络编程]线程的互斥

线程互斥是指某一资源同时只允许一个访问者(程序调用)对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

[引例]

package cn.sundroid.thread;{(String[] args) {new TestSynchronized().init();}() {final Printer printer = new Printer();/***开启一个新线程*/new Thread(new Runnable() {() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}printer.print(“sundroid”);}}}).start();/***开启一个新线程*/new Thread(new Runnable() {() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}printer.print(“lydon”);}}}).start();}{(String name) {int len = name.length();for (int i = 0; i < len; i++) {System.out.print(name.charAt(i));}System.out.println();}}}

修改方法

为什么? synchronized代表这个方法或者代码块加锁,,当前有一个线程正在调用这个方法或者代码块时都必须得等当前线程将该方法或代码块调用完成后,其它等待调用的线程才可以开始调用。 不加synchronized时print方法正在输出“lydon”,这个时候程序直接开始输出“sundroid”,自然会出现“lydonsund”这样类似我们不想看到的结果。

充满了恐惧的声音,一种不确定的归宿的流动。

[java网络编程]线程的互斥

相关文章:

你感兴趣的文章:

标签云: