java的wait方法和notify还有notifyAll方法

来源:互联网 发布:淘宝企业店铺入驻费用 编辑:程序博客网 时间:2024/04/30 00:52

    最近想写一个音乐的播放器,所以就使用这个java语言进行书写。我是使用一个线程对这个音乐进行播放的,但是当我写到这个音乐的暂停的时候,我想使用这个线程的挂起的方法进行操作,但是我当时学习java的时候对这个线程就是没有多么的理解,只能是随时使用随时进行查询了。下面是记录我的心路历程啊。

        首先是我假如你是学习过操作系统的,因为这个样子你就可以理解这个线程和进程的区别了,其实举个例子就是这样子的:不知道你仔细的观察过绳子没有,每一个绳子都是有几股细细的绳子拧成的,那个细细的绳子又是更加的细细的绳子拧成的。所以可以把那写的细细的绳子可以看做线程或者是进程。在这儿我不想过多的讨论这个线程和进程的区别。

        首先假如你的线程都是已经在操作系统的等待池子中,之后就是等待操作系统的临幸了。首先是将一下这个对象锁 的问题。所谓对象锁就是一个对象有一个锁,就像厕所一样子,每一个厕所就只有一个坑吧,所以当你拿到这个对象的锁之后,别的想使用这个锁的只能等待,就好像这个厕所你已经使用了,你一定是把这个厕所上锁了,如果你做过火车,那么你的理解就会更加的深刻了。记住一个对象只用一个锁。其实提供这个锁的机制是为了同步的概念,因为假如说你产生一个对象了,这个对象是有自己的属性数据的,类的方法也是对这个数据进行操作的,如果你不需要同步的概念的,那么你就可以随便的使用这个方法对这个对象进行操作。但是当你需要同步的时候,你就要使用这个同步的概念了,怎么才可以说明是同步的,就是使用synchronized关键字,这个关键字可以使用一个方法,也可以使用一个语句块。

        下面,我们主要将一下这个wait方法和notifyAll方法的原理,当一个线程使用一个对象(注意是一个对象啊,如果对象不是一样子的,那么他们的锁也是不一样子的)的synchronized方法或者是语句的时候,就会得到这个对象的锁,别人在想使用这个synchronized方法或者是语句都是不行的(但是,其他的不是synchronized方法或者语句的时候是没有任何的限制的)。他只有等待啊,就像你在火车的厕所的外面,当你看到这个标志是有人的时候,你只有看一眼,看一眼还是看一眼,只有里面的那个人出来之后,你才能进去,所所以,想使用这个特synchronized方法或者语句的只能等待等待。等待别人彻底的使用完。让一个线程(我们总是提到线程的问题,如果你只有一个主线程的话,那么你酒基本使用不到这个wait方法或者是语句。)让出来这个锁有两个办法,一个是:自己使用完了,第二:就是自己没有使用完,但是自己调用了这个对象(就是拥有锁的对象,以前的我一直以为是线程,其实不是,就像拥有锁的是厕所不是人)wait方法,自己让出来了,让别人执行一会儿。但是当一个线程让出来锁的时候,你必须同志等待的人们,这样子就会有一个线程进入拥有这个锁了。之后就是前面的循环。

       总体来说java的线程和socket编程才是最难的。所以,这此做一个播放器让我明白和学习了许多的关于线程的知识,学习操作系统果然是有用的啊。

0 0
原创粉丝点击