A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

4 个回复

倒序浏览
实现线程有两种方法:继承Thread类或者实现Runnable接口
实现同步也有两种方法:一种是用同步方法,一种是用同步块
同步方法就是在方法返回类型后面加上synchronized, 比如:public void synchronized add(){...}
同步块就是直接写:synchronized (这里写需要同步的对象){...}
回复 使用道具 举报
//继承方法
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类也可以实现
回复 使用道具 举报
其实就是讲共享数据加锁,锁机制

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

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

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

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


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

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

同步的实现方面有两种, 分别是synchronized和wait与notify;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马