不知不觉,心又飘了起来。整个人也很轻。什么也做不下去,什么也不想做。总想着应该得到更多的回报,却一直没有付出更多的努力。
看算法,看数据结构。看groovy,看nodejs,看jvm。什么都看,却懒于动手实践。进展缓慢。
最近,在关注nodejs的应用。也在github上fork了几个项目,希望能够学到想学的东西。
今天,看了电影《最长的一日》。
写了生产者消费者的程序。虽然想象中很简单,但是,实现起来,还是把一些细节搞错了。还好,最终搞定了,也搞明白了问题之所在。也算是今天的一点小收获吧。
package test.multithread;
public class MultiThreads {
static int cnt = 0;
static class Counter {
private int cnt = 0;
synchronized void inc() {
cnt ++;
}
synchronized int get() {
return cnt;
}
}
public static void main(String[] args) {
final Counter counter = new Counter();
Thread producer = new Thread(new Runnable(){
@Override
public void run() {
while(true) {
synchronized(counter) {
counter.inc();
int value = counter.get();
System.out.println("producer : " + value);
counter.notifyAll();
try {
counter.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (value >= 1000) {
break;
}
}
}
System.out.println("producer exited");
}
});
Thread consumer = new Thread(new Runnable(){
@Override
public void run() {
while(true) {
synchronized(counter) {
int value = counter.get();
System.out.println("consumer : " + value);
counter.notifyAll();
if (value >= 1000) {
break;
}
try {
counter.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println("consumer exited.");
}
});
producer.start();
consumer.start();
}
}
希望明天能把它用lock改写一下。用clojure的STM改写一下。
今天看到一个似曾相识的算法题,就是不知怎么搞了。翻到旧帖子一看,一模一样。太尴尬了。竟然一点印象都没有了。
少说话,尤其是牢骚很多的时候,心情不好的时候。
心平气和。