浏览 1442 次
锁定老帖子 主题:在java中线程-线程的互斥技术的Demo
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-11
public class TraditionalThreadSynchronized { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new TraditionalThreadSynchronized().init(); } private void init(){ /**内部类不能访问局部变量,所以这里要用final*/ final Outputer outputer = new Outputer(); new Thread(new Runnable() { @Override public void run() { while(true){ try { Thread.sleep(5); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } outputer.output("GavinlinHere"); } } }).start(); new Thread(new Runnable() { @Override public void run() { while(true){ try { Thread.sleep(5); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } outputer.output("JiaoZhaoHere"); } } }).start(); } static class Outputer{ private String name; /** * 可以与outputsync同步,不可与static的同步 * @param name */ public void output(String name){ this.name = name; int len = this.name.length(); synchronized(this){ for(int i = 0;i < len; i++){ System.out.print(this.name.charAt(i)); } System.out.println(); } } public synchronized void outputsync(String name){ this.name = name; int len = this.name.length(); for(int i = 0;i < len; i++){ System.out.print(this.name.charAt(i)); } System.out.println(); } /** * 若想与output同步,必须output的锁为Outputer.class * @param name */ public static synchronized void sOutputSync(String name){ int len = name.length(); for(int i = 0;i < len; i++){ System.out.print(name.charAt(i)); } System.out.println(); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-11-13
低端了点低端了点
|
|
返回顶楼 | |