トップ «前の日記(2014-02-12) 最新 次の日記(2014-02-14)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|

2014-02-13 :-(

_ 午前

0530 起床

0830 出勤 || デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

2030 退勤

2200 飯

_ [Java][Ruby][マルチスレッド][デザインパターン]Java言語で学ぶデザインパターン入門マルチスレッド編 Immutable - 壊したくとも、壊せない

インスタンスが不変であることを保証する。Synchroinze を使わずとも複数のスレッドから読まれても OK (書く手段を提供しないため)

# coding: utf-8

#
# 『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』 http://www.hyuki.com/dp/dp2.html
# 
# Immutable - 壊したくとも、壊せない
#

require 'thread'
require 'monitor'

class Person
  def initialize(name, address)
    @name = name
    @address = address
  end
  
  def getName()
    return @name
  end
  
  def getAddress()
    return @address
  end
  
  def to_s()
    return "[ Person: name = #{@name} address = #{@address} ]"
  end
end

class PrintPersonThread < Thread
  def initialize(person, name)
    @person = person
    @name = name
    
    block = Proc.new() {
      while true
        puts "Thread-#{@name} prints #{@person}"
      end
    }
    super(&block)
  end
end

def main(argv)
  alice = Person.new("Alice", "Alaska");
  th ||= []
  th << PrintPersonThread.new(alice, 0)
  th << PrintPersonThread.new(alice, 1)
  th << PrintPersonThread.new(alice, 2)
  th.each {|t| t.join() }
end

main(ARGV)
% ruby Immutable.rb
Thread-0 prints [ Person: name = Alice address = Alaska ]
Thread-0 prints [ Person: name = Alice address = Alaska ]
Thread-0 prints [ Person: name = Alice address = Alaska ]
Thread-0 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-1 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
Thread-2 prints [ Person: name = Alice address = Alaska ]
以下略

ライセンス

Copyright (C) 2002,2006 Hiroshi Yuki.
http://www.hyuki.com/dp/dp2.html
hyuki@hyuki.com

This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is not
required.

2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

参考

『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』

4797331623