多线程互斥,用到Synchronized
2015-06-07 11:53
246 查看
package com.test;
public class TraditionalThreadSynchronized {
public static void main(String [] arge){
new TraditionalThreadSynchronized().init();
}
private void init(){
final outPuter out =new outPuter();
new Thread(new Runnable() {
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
out.output("zhangxiaoxiang");
}
}
}).start();
new Thread(new Runnable() {
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
out.output3("liguoming");
}
}
}).start();
}
static class outPuter{
public void output(String name){
int len = name.length();
synchronized (outPuter.class) {
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
public synchronized void output2(String name){
int len = name.length();
synchronized (this) {
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
public static synchronized void output3(String name){
int len = name.length();
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
}
public class TraditionalThreadSynchronized {
public static void main(String [] arge){
new TraditionalThreadSynchronized().init();
}
private void init(){
final outPuter out =new outPuter();
new Thread(new Runnable() {
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
out.output("zhangxiaoxiang");
}
}
}).start();
new Thread(new Runnable() {
public void run() {
while(true){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
out.output3("liguoming");
}
}
}).start();
}
static class outPuter{
public void output(String name){
int len = name.length();
synchronized (outPuter.class) {
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
public synchronized void output2(String name){
int len = name.length();
synchronized (this) {
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
public static synchronized void output3(String name){
int len = name.length();
for(int i = 0 ;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}
}
}
相关文章推荐
- Darwin流媒体服务器在windows下搭建
- 黑马程序员---java面向抽象/接口编程
- Storm入门之第8章事务性拓扑
- hbmy周赛1--D
- Storm入门之第8章事务性拓扑
- 我偏执,我要变
- android 调用系统界面
- hbmy周赛1--D
- HDU 3535 AreYouBusy
- oracle分页
- Storm入门之第8章事务性拓扑
- 关于数组在内存中的存放形式
- 练习作品10:被一个傻叉坑了 要求把串口 封装到DLL中调用;
- asp.net开发微信公众平台之验证消息的真实性
- Count Complete Tree Nodes
- hbmy周赛1--C
- Storm入门之第6章一个实际的例子
- Linux内核与驱动开发学习总结:自旋锁和信号量(五)
- hbmy周赛1--C
- 友善之臂tiny4412-如何搭建android开发环境(64位操作系统)