• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

对于多线程的开启的疑问

代码如下:
疑问:对于方式一和方式二  区别就是在new Thread()时候,方式一是传递了同一个 Processor对象p,而方式二是new了两个Processor对象,请问单独从这点来说 对于后续 启动两个线程有什么不同之处吗?


即使new Thread是传递同一个Processor对象p  t1.start() 和 t2.start() 都会开启两个线程。
而这种方式 也是 会开启两个线程  这两种方式有什么区别吗???
Thread t1 = new Thread(new Processor());
Thread t2 = new Thread(new Processor());






public class synchronized {
    public static void main(String[] args) throws InterruptedException {
       
        //方式一
       
        MyClass m = new MyClass();
       
        Processor p = new Processsor(m);
       
        Thread t1 = new Thread(p);
        Thread t2 = new Thread(p);
t1.start();
t2.start();
       
       
       
        //方式二-----------------------------------------------------------------
       
        Thread t1 = new Thread(new Processor());
        Thread t2 = new Thread(new Processor());
        t1.start();
        t2.start();
    }
}


class Processsor implements Runnable {


        MyClass mc;
       
       
        public Processor() {}
       
        public Processor(MyClass mc) {
                this.mc  =  mc;
        }


    @Override
    public void run() {
        if ("t1".equals(Thread.currentThread().getName())) {
            MyClass02.m1();   //类锁
        }
        if ("t2".equals(Thread.currentThread().getName())) {
            MyClass02.m2();
        }
    }
}




class MyClass {
    public synchronized static void m1() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("m1........");
    }


  
    public synchronized static void m2() {
        System.out.println("m2........");
    }
}

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

没有区别。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!