您的位置:首页 > 编程语言

Ajax模型框架完整代码

2009-08-12 10:09 344 查看
Runnable version of sample code in Exchanger's javadoc.

 

import java.util.concurrent.Exchanger;

public class FillAndEmpty {
static String PART = "abcde";
static int PART_LEN = 5;
static int STEP_COUNT = 10;

Exchanger<StringBuilder> exchanger = new Exchanger<StringBuilder>();
StringBuilder initialEmptyBuffer = new StringBuilder(50);
StringBuilder initialFullBuffer = new StringBuilder(50);

class FillingLoop implements Runnable {
StringBuilder currentBuffer = initialEmptyBuffer;
@Override
public void run() {
try {
while (currentBuffer != null) {
currentBuffer.append(PART);
if (currentBuffer.length() == PART_LEN * STEP_COUNT) {
System.out.println("full buffer: " + currentBuffer);
currentBuffer = exchanger.exchange(currentBuffer);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

class EmptyingLoop implements Runnable {
@Override
public void run() {
StringBuilder currentBuffer = initialFullBuffer;
try {
while (currentBuffer != null) {
currentBuffer.setLength(currentBuffer.length() - PART_LEN);
if (currentBuffer.length() == 0) {
System.out.println("empty buffer: " + currentBuffer);
currentBuffer = exchanger.exchange(currentBuffer);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

void start() {
for (int i = 0; i < STEP_COUNT; i++)
initialFullBuffer.append(PART);
new Thread(new FillingLoop()).start();
new Thread(new EmptyingLoop()).start();
}

public static void main(String[] args) {
FillAndEmpty fae = new FillAndEmpty();
fae.start();
}
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: