package com.ygl;
public interface Output {
public void output(String str);
}
//**************************
package com.ygl;
public class Outputer implements Output{
public void output(String str){
int len=str.length();
synchronized(this) //或者用方法锁
{
for(int i=0;i<len;i++){
System.out.print(str.charAt(i));
}
System.out.println();
}
}
}或者
package com.ygl;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Outputer implements Output{
Lock lock=new ReentrantLock();
public void output(String str){
int len=str.length();
lock.lock();
try{
for(int i=0;i<len;i++){
System.out.print(str.charAt(i));
}
System.out.println();
}finally{
lock.unlock();
}
}//************************************
package com.ygl;
public class MyRunnable implements Runnable{
private Output obj;
private String str;
public MyRunnable ( Output obj,String str){
this.obj=obj;
this.str=str;
}
public MyRunnable (){
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
obj.output(str);
}
}
}//*********************************
package com.ygl;
public class TraditionalThreadSynchronized {
public static void main(String[] args) {
Output output=new Outputer();
Runnable runnable1 =new MyRunnable(output,"ygl");
Runnable runnable2 =new MyRunnable(output,"liming");
Thread thread1=new Thread(runnable1);
thread1.start();
Thread thread2=new Thread(runnable2);
thread2.start();
}
}
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 多线程例子7 线程安全 死锁
死锁:在多个线程里对多个同步对象具有循环依赖时常会出现死锁。最简单的死锁例子就是线程一得到了A对象的锁旗标想得到B对
多线程 Java thread 字符串常量 死锁 -
Java 多线程例子1 小例子
学习的张孝祥的《Java就业培训教程》觉得讲的不错,是比较好的入门教程吧。下面是最简单的例子。p
多线程 Java thread System