安全多线程例子
来源:互联网 发布:ntfs foe mac教程 编辑:程序博客网 时间:2024/06/12 21:30
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();
}
}
- 安全多线程例子
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程安全
- 多线程例子
- 多线程例子
- 多线程例子
- 多线程例子
- 多线程例子
- 多线程例子
- 多线程例子
- WPF 显示PDF文件(非Adobe PDF Reader COM )
- 边缘滑动返回
- Maven内置属性及使用
- 从一道题目验证Servlet单实例
- LayoutParams 参数含义及转换dp
- 安全多线程例子
- 修练8年C++面向对象程序设计之体会之 命名约定及assert
- DBConnection公共类的使用-------java操作数据库(3)
- linux上几款必须装的软件推荐
- poj 2955 Brackets 区间DP
- extjs中的表格编辑
- 设置navigationController的背景颜色和背景图片
- iOS 异常处理@try,catch
- STM32F207(3) SetSysClock