用JAVA实现多线程(生产者与消费者问题)
public class MultiThread {
public static void main(String[] args) {
ProductStack box = new ProductStack("box");
Producer p1 = new Producer(box, "p1");
Producer p2 = new Producer(box, "p2");
Producer p3 = new Producer(box, "p3");
Consumer c1 = new Consumer(box, "c1");
Consumer c2 = new Consumer(box, "c2");
//Consumer c3=new Consumer(box,"c3");
//Consumer c4=new Consumer(box,"c4");
//Consumer c5=new Consumer(box,"c5");
p1.start();
p2.start();
p3.start();
c1.start();
c2.start();
//c3.start();
//c4.start();
// c5.start();
}
}
class Product {
int id;
public Product(int id) {
this.id = id;
}
public String toSring() {
return "Product" + id;
}
}
class ProductStack {
String name;
static int point = 0;
private Product[] p = new Product[10];
public ProductStack(String name) {
this.name = name;
}
public String getname() {
return name;
}
public synchronized int getpoint() {
return point;
}
public synchronized void push(Product a) {
while (point >= p.length) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
this.notifyAll();
}
p[point] = a;
// System.out.println(point);
// System.out.println(p[point].toSring());
point++;
// yield();
}
private void yield() {
}
public synchronized Product pop() {
while (point == 0) {
try {
相关文档:
l组件从功能上分可分为:
1) 顶层容器:JFrame,JApplet,JDialog,JWindow
2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar
3) 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.
1.JFrame的用法
1) 用getContentPane( )方法获得JFrame的 ......
package com.kiloway.trace.utils;
import java.lang.reflect.Field;
/**
* @author Zhang Qi
* @Create Time 2010/01/09
* */
public class ObjectToXML {
public String toString(Object object) throws Exception {
StringBuilder sb = new StringBuilder();
//得到类的名称
String classname = obj ......
public class javaTest {
public static void test(String ...strings){
for(String str: strings){
System.out.print(str + " ");
}
System.out.println();
}
public static void main(String[] args){
test("a", "b", "c", "ddd");
test( ......
通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法
小型项目中常常都没有用三方持久化框架,而大都是用公司或自行依据DAO模式封装的一些组件来完成数据库持久化动作,并且,通常为了更具可扩展性,常常使用抽象工厂模式来解耦合。
一、先看代码
1、简单工厂代码
/************************************************* ......
首先,AMF3似乎并不支持List.ArrayList等数组的解析...Java客户端传递List对象,AMF3无法解析为Array...
原因是:AMF3只支持基础数据类型...
故,需要将List等数据转换为Object[] !这样AMF3才能将Java传递的数组解析为Array...
由于数组的创建,即便一开始不赋值,也需要设置数组的length,如:String[] myString = new Str ......