易截截图软件、单文件、免安装、纯绿色、仅160KB

java生产者消费者

题目:请用多线程实现一个生产者类和一个消费者类,生产者随机生成20个字符,消费者将字符打印到控制台。
class SyncStack{ //同步堆栈类
   private int index = 0; //堆栈指针初始值为0
   private char []buffer = new char[6]; //堆栈有6个字符的空间
   public synchronized void push(char c){ //加上互斥锁
     while(index = = buffer.length){ //堆栈已满,不能压栈
     try{
        this.wait(); //等待,直到有数据出栈
       }catch(InterruptedException e){}
       }
   this.notify(); //通知其它线程把数据出栈
   buffer[index] = c; //数据入栈
   index++; //指针向上移动
   }
   public synchronized char pop(){ //加上互斥锁
       while(index ==0){ //堆栈无数据,不能出栈
        try{
           this.wait(); //等待其它线程把数据入栈
        }catch(InterruptedException e){}
          }
       this.notify(); //通知其它线程入栈
       index- -; //指针向下移动
       return buffer[index]; //数据出栈
    }
       }
    class Producer implements Runnable{ //生产者类
       SyncStack theStack;
        //生产者类生成的字母都保存到同步堆栈中
       public Producer(SyncStack s){
          theStack = s;
       }
       public void run(){
          char c;
          for(int i=0; i<20; i++){
            c =(char)(Math.random()*26+'A');
                          //随机产生20个字符
            theStack.push(c); //把字符入栈
            System.out.println("Produced: "+c); //打印字符
            try{
            Thread.sleep((int)(Math.random()*1000));
                     /*每产生一个字符线程就睡眠*/
            }catch(InterruptedException e){}
          }
       }
     }
   


相关文档:

java 开发

 本项目用到的技术是ssh,ajax框架dwr,工作流等
遇到的问题是业务流程不熟悉,技术上和团队成员有些差距(但我相信自己会完成任务)
sql语句的编写
思路问题,只要有思路,就会有方法,做软件也需要奇思妙想啊哈哈;
开发过程也是不断学习的过程;
最近遇到了一个session和database不同步的问题,解决的方法是将 ......

JAVA高级:多核线程 volatile原理与技巧

 
为什么使用volatile比同步代价更低?
同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.
而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.
volatile原理是什么?
volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见j ......

java学习笔记struts action初始化时间和次数

大家都知道 action配置在struts-config.xml中,而struts-config.xml是在tomcat启动时读取的那action是不是在这个时候初始化的
我们可以在action类里进行测试 在构造函数里打印一句话 经测试action是在调用action时初始化,并且多次调用只初始化一次,
这也就是所有的请求共享action实例
所以action是线程不安全的, ......

java调用native2ascii.exe

 本文来自CSDN博客:http://blog.csdn.net/xyk0830/archive/2007/11/06/1869638.aspx
命令行格式:
native2ascii.exe -[options] [inputfile [outputfile]]
其中:
  -[options]表示命令开关,有两个选项可供选择:
    -reverse:用Latin-1或Unicode编码把文件转换成本地编码格式
    -encoding ......

几种读取属性文件的JAVA实现方式

 
1.使用java.util.Properties类的load()方法
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
  Properties p = new Properties();
  p.load(in);
2.使用java.util.ResourceBundle类的getBundle()方法  
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号