スレッドのサンプルソース
package sample;
public class Main {
public static void main(String [] args) throws InterruptedException{
Execute exe = new Execute();
exe.init();
exe.exe();
exe.exe();
}
}
package sample;
import java.util.concurrent.CopyOnWriteArrayList;
public class Execute {
CopyOnWriteArrayList<String> wordList = new CopyOnWriteArrayList();
public void init(){
Sab sab = new Sab();
Thread saThread = new Thread(sab);
saThread.start();
sab.setWrodList(wordList);
}
public void exe() throws InterruptedException {
//wordListに詰めてる間は、sabの方では詰められた文字列だけ常に出力させ続けたい。
for(int i=0;i<10;i++){
wordList.add("hoge"+i );
}
//10秒ごとに出力させているwordListの中身を一つずつ減らしていきたい。
for(int i=0;i<10;i++){
wordList.remove(9-i);
}
}
}
package sample;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
public class Sab implements Runnable {
CopyOnWriteArrayList wordList = new CopyOnWriteArrayList();
public void run() {
//ループさせ続けて、メイン側でwordListにwordを挿入したり削除したりする。
//wordListに入っている情報を出力させつづけたい
while(true){
//int size = wordList.size();
CopyOnWriteArrayList tempWordList = wordList;
Iterator ite = tempWordList.iterator();
if(null != ite){
while(ite.hasNext()){
String str = (String)ite.next();
System.out.println(str);
}
System.out.println("-------------------");
}else{
System.out.println("現在wordlistの中身は空です。");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
public void setWrodList(CopyOnWriteArrayList wordList){
this.wordList = wordList;
}
}
public class Main {
public static void main(String [] args) throws InterruptedException{
Execute exe = new Execute();
exe.init();
exe.exe();
exe.exe();
}
}
package sample;
import java.util.concurrent.CopyOnWriteArrayList;
public class Execute {
CopyOnWriteArrayList<String> wordList = new CopyOnWriteArrayList();
public void init(){
Sab sab = new Sab();
Thread saThread = new Thread(sab);
saThread.start();
sab.setWrodList(wordList);
}
public void exe() throws InterruptedException {
//wordListに詰めてる間は、sabの方では詰められた文字列だけ常に出力させ続けたい。
for(int i=0;i<10;i++){
wordList.add("hoge"+i );
}
//10秒ごとに出力させているwordListの中身を一つずつ減らしていきたい。
for(int i=0;i<10;i++){
wordList.remove(9-i);
}
}
}
package sample;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
public class Sab implements Runnable {
CopyOnWriteArrayList wordList = new CopyOnWriteArrayList();
public void run() {
//ループさせ続けて、メイン側でwordListにwordを挿入したり削除したりする。
//wordListに入っている情報を出力させつづけたい
while(true){
//int size = wordList.size();
CopyOnWriteArrayList tempWordList = wordList;
Iterator ite = tempWordList.iterator();
if(null != ite){
while(ite.hasNext()){
String str = (String)ite.next();
System.out.println(str);
}
System.out.println("-------------------");
}else{
System.out.println("現在wordlistの中身は空です。");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
public void setWrodList(CopyOnWriteArrayList wordList){
this.wordList = wordList;
}
}
2006年05月16日(火) 14:48:50 Modified by warp1030