C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: [java]排他制御について


(過去ログ 73 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■42958 / inTopicNo.1)  [java]排他制御について
  
□投稿者/ アキナベ (2回)-(2009/10/25(Sun) 00:51:39)

分類:[.NET 全般] 

いつもお世話になっております。

javaの排他処理についてお聞きしたいことがあります。
ご回答いただければ幸いです。

下記のコードなのですが、変数をフラグとして排他制御を行っています。
これをjavaのsynchronizedなどを使って制御することはできないものでしょうか?

public class ThreadTest {
//0でロック:1でロック解除
static int flg = 1;
public static void main(String[] args) {
Timming time = new Timming();
time.start(10000);
countUp();
}
public static void countUp(){
flg =0;
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(i+"\n");
}
flg =1;
}
}

public class Timming extends Thread{
public void run() {
Thread.sleep(10000);
while(true){
if(ThreadTest.flg == 1){
ThreadTest.flg = 0;
System.out.print("スレッド終了\n");
System.exit(20);
}
}
}
}


以上、よろしくお願いいたします。
引用返信 編集キー/
■42959 / inTopicNo.2)  Re[1]: [java]排他制御について
□投稿者/ επιστημη (2229回)-(2009/10/25(Sun) 01:39:26)
επιστημη さんの Web サイト
↓こんなんでえぇですか?

public class ThreadTest {

  public static void main(String[] args) {
    Timing time = new Timing();
    synchronized ( time ) { 
      time.start();
      countUp();
    }
  }

  public static void countUp(){
    for (int i = 0; i < 20; i++) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      System.out.print(i+"\n");
    }
  }
}

class Timing extends Thread{
  public void run() {
    try {
      Thread.sleep(10000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    synchronized ( this ) {
      System.out.print("スレッド終了\n");
    }
    System.exit(20);
  }
}

引用返信 編集キー/
■42961 / inTopicNo.3)  Re[2]: [java]排他制御について
□投稿者/ アキナベ (3回)-(2009/10/25(Sun) 10:22:47)
ありがとうございます!
おかげ様で解決することができました!


No42959 (επιστημη さん) に返信
> ↓こんなんでえぇですか?
>
> public class ThreadTest {
>
> public static void main(String[] args) {
> Timing time = new Timing();
> synchronized ( time ) {
> time.start();
> countUp();
> }
> }
>
> public static void countUp(){
> for (int i = 0; i < 20; i++) {
> try {
> Thread.sleep(1000);
> } catch (InterruptedException e) {
> e.printStackTrace();
> }
> System.out.print(i+"\n");
> }
> }
> }
>
> class Timing extends Thread{
> public void run() {
> try {
> Thread.sleep(10000);
> } catch (InterruptedException e) {
> e.printStackTrace();
> }
> synchronized ( this ) {
> System.out.print("スレッド終了\n");
> }
> System.exit(20);
> }
> }
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -