回 帖 发 新 帖 刷新版面

主题:请教高手:多线程如何对同一资源进行进行不同操作

编写两个线程,一个对j进行j++,一个对j--,这两个线程访问的是同一个j。
是不是应该让这两个线程Thread1和Thread2都实现Runnable接口?
如何把这个参数传到这两个线程中?是在这两个线程类中使用构造函数吗?
那么应该在主函数数中怎么调用这两个线程,是写成:
Thread1 thread1=new Thread1();
Thread2 thread2=new Thread2();
new Thread(thread1).start();
new Thread(tread2).start();
最好能用代码表示一下,谢谢了。

回复列表 (共1个回复)

沙发

自己的问题自己解决:

class Thread1 implements Runnable{
    TT t;
    public Thread1(TT t){
        this.t=t;
    }
    public void run(){
        while(true)
        {
           synchronized(t){
               t.j++;
               System.out.println(Thread.currentThread().getName()+" : 

j1="+t.j);
           }
        }
    }
}

class Thread2 implements Runnable{
    TT t;
    public Thread2(TT t){
        this.t=t;
    }
    public void run(){
               while(true)
                {
        synchronized(t){
            t.j--;
            System.out.println(Thread.currentThread().getName()+" : j2="+t.j);
        }
              }
    }
}

class TT{
    public static int j=10;
}

public class Result {

    public static void main(String[] args) throws Exception{
    
        TT tt=new TT();
        Thread1 thread1=new Thread1(tt);
        Thread2 thread2=new Thread2(tt);
        new Thread(thread1).start();
                Thread.sleep(10);
        new Thread(thread2).start();
        
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册