黑马程序员技术交流社区

标题: 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? [打印本页]

作者: 郭炜    时间: 2012-3-14 11:21
标题: 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
作者: 江远云    时间: 2012-3-16 20:32
实现线程有两种方法:继承Thread类或者实现Runnable接口
实现同步也有两种方法:一种是用同步方法,一种是用同步块
同步方法就是在方法返回类型后面加上synchronized, 比如:public void synchronized add(){...}
同步块就是直接写:synchronized (这里写需要同步的对象){...}
作者: 李创    时间: 2012-3-16 21:59
//继承方法
class Testextends extends Thread
{
         private int x=10;
         public void run()
         {
                 while(x>0)
                 {
                         System.out.println(Thread.currentThread().getName()+" extends: "+x--);
                 }
         }

}
//实现方法
class Testimplemets implements Runnable
{
         private int y=10;
         public void run()
         {
                 while(y>0)
                 {
                         System.out.println(Thread.currentThread().getName()+" implements : "+y--);
                 }
         }

}
同步用synchronized() 还有Lock类也可以实现
作者: 李飞    时间: 2012-3-17 00:20
其实就是讲共享数据加锁,锁机制

       1.同步代码块
           把需要被一个线程一次执行完的代码存储到同步代码块中,锁可以使任意对象
           synchronized(对象){
                code…;
           }
       2.同步函数
            让函数具有同步性,用synchronized修饰方法,锁只能是固定对象this

      如果想让同步函数和同步代码块之间实现同步,同步代码块的锁要定位this

      是否同步的前提:
           1.两个或是两个以上线程
           2.多个线程使用同一个锁

      同步的缺点:效率低,当出现同步嵌套的时候会发生死锁
      同步函数使用的锁是this;但是,静态同步函数使用的锁是该类对应的字节码文件对象:类名.class


     1.synchronized,锁是隐式的
         上面已经介绍

     2.Lock接口,锁是显式的
         一个锁可以对应多组监视器对象,这样就可以实现只唤醒对方线程,而不需要唤醒所有的线程。
         由两个方法完成:lock()获取锁;unlock()释放锁      
         锁控制同步,监视器用于同步中对象的操作
作者: a504079589    时间: 2012-3-17 02:11
多线程有两种实现方法, 分别是继承Thread类和实现Runnable接口 ;

同步的实现方面有两种, 分别是synchronized和wait与notify;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2