Java 生产者与消费者多线程实现——以及问题解析

问题描述:

  模拟实现一种场景:有一个篮子,最多可以装5个苹果,一个人从篮子中取苹果,一个人向篮子中放苹果。

问题思路:

  线程同步的经典问题——生产者和消费者,只不过换了个皮囊。此处只有一个生产者和一个消费者。
  初步实现,不罗嗦,直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class TestInteger {
private Integer number = 0;//篮子中苹果的数量
class Consumer implements Runnable {//消费者
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
while (number > 0) {
number--;
System.out.println("-----"+ number);
}
}
}
}
class Producer implements Runnable {//生产者
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
while (number < 5) {
number++;
System.out.println("++++++"+ number);
}
}
}
}
}

Ubuntu 14.04下ruby和rails的安装

写在前面:

  ruby的安装以及版本的管理工具有很多:如rvm,rbenv,ry,rbfu等,具体工具的优点以及其优点,各位看官可以自行google。本文用的ruby版本管理工具是rbenv,rbenv是一个轻量级的ruby版本管理器。通过rbenv以及ruby-build插件二者项目结合可以快速的在linux下搭建ruby以及rails安装环境。

环境介绍:

  • Ubuntu14.04.kylin
  • Git安装
  • rbenv和ruby-build的GitHub地址:
    • git://github.com/sstephenson/rbenv.git .rbenv
    • git://github.com/sstephenson/ruby-build.git

rbenv和ruby-build的安装:

  • git clone git:git://github.com/sstephenson/rbenv.git ~/.rbenv 将版本克隆到本地目录
  • echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
  • echo 'eval "$(rbenv init -)"' >> ~/.bashrc
  • 重启终端让配置生效
  • git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins
  • cd ruby-build ./install.sh