建立和使用干活线程的几种方式

来源:互联网 发布:软件研发立项报告 编辑:程序博客网 时间:2024/05/22 13:33

一、建立干活线程

1、

   

2、建立干活线程和使用干活线程混合在一个Test1中:问题是一个对象有一些数据还没有初始化,而干活线程就提前执行了。

   建立干活线程用Runnable,驱动线程作为类实例变量 t1,new Test1() ,启动干活线程 

    Test1 implements Runnable{ Thread t1=new Thread(this), public Test1() {t1.start()}}

3、

二、干活线程实现Runnable 的类(即Runnable对象)

使用干活线程,用Thread,也叫驱动线程,驱动干活线程干活。      

但是有返回值得Test2线程必须用 ExecutorService的submit()方法提交,才能得到返回值。

1、  一个新驱动线程对应一个新干活线程,也可以多个新驱动线程对应对多个新干活线程。    

   

     Thread t2=new thread(new Test1)

     Thread t3=new thread(new Test1)

     一个对象对应一个monitor大楼,上面new Test1 三次,

      有3个monitor大楼:t1.monitor 大楼,t2.monitor 大楼,:t3.monitor 大楼


2、二,三,多个新驱动线程对应一个新干活线程,反正一个新驱动线程需要干活线程。随便指定。

   只有在这种情况下,多个驱动程序对应同一个对象,Synchronize 锁住对象才有意义,而且这样一个对象对应一个monitor,monitor才存在多个线程竞争特殊房间的问题。

  例如:t1:看成是共享资源洗澡间,多个驱动线程t1_1,t1_2,t1_3都抢着进洗澡间,只有在这种情况下,当一个人(驱动线程t1_1)竞争到洗澡间,就去洗澡,上锁,释放锁,别人才能进去。

   下面是只有一个t1.monitor 大楼

    

  有两种情况:1》多个新驱动线程,对应一个新的干活线程

                           干活线程设置拥有共享数据,哪么只能建立一个新对象,供多个驱动线程去竞争共享数据。

                      2》多个新驱动线程,对应多个新干活线程,一个共享数据的对象。           

 三、干活线程继承thread。

     使用干活线程,直接在构造器里 .sart 启动。

四、使用干活线程,用连接池,即线程thread对象由Executor管理。