2016年4月22日_JAVA学习笔记_多线程2

1、线程的六个状态(不同的地方有不同的状态数量和名称,但是应该都是大同小异):

新创建(New);可运行(Runnable);被阻塞(blocked);等待(Waiting);计时等待(Timed waiting);被终止(Terminated)。

1)当使用new 操作符创建一个新线程时,该线程还没有开始运行,在运行之前还有一些基础工作需要做(可能),因此处于新创建状态;

2)一旦线程调用了start方法,线程就处于可运行状态中。但是需要注意的是,一个可运行的线程可能正在运行也可能没有运行,这一切都取决于操作系统;

3)当线程处于被阻塞、等待和计时等待状态时,线程暂时停止活动,不运行任何代码。如何达到非运行状态是区分这三个状态的标志。具体细节比较复杂,暂且不表。

4)线程有两个原因之一被终止:第一个是因为run方法正常退出,而自然死亡;第二个是因为一个没有被捕获的异常终止了run方法而意外死亡。

2、关于线程与CPU的关系,有两个表示说法,一个是CPU的执行资格,这意味着该线程可以被CPU处理,在处理队列中排队;第二是CPU的执行权,表示正在被CPU处理。对于处于运行状态的线程,其具备着CPU的执行资格也具备CPU的执行权,处于冻结状态的线程不具备CPU的执行资格也不具备CPU的执行权。

时间: 2024-10-01 03:24:46

2016年4月22日_JAVA学习笔记_多线程2的相关文章

2016年4月24日_JAVA学习笔记_多线程三_线程间通信

1.毕老师第十四天内容,线程间的通信.大概是使用wait(),notify()等一系列函数来控制各个线程的CPU执行资格和执行权,通过合适的时机在各个线程当中切换来达到线程间通信的目的. 涉及到的方法: wait():让线程处于等待状态,被wait()的线程会被存储到线程池当中,直到被唤醒.只能在同步方法中被调用. notify():随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态.只能在同步方法和同步代码块中被调用. notifyAll():接触所有在该对象上调用wait()方法的

2016年4月20日_JAVA学习笔记_多线程

1.感觉书里的东西没什么意思了,继续来看毕老师的视频好了.今天家里就剩我一个人了,可以出去吃饭了. 2.程序中每一个任务称为一个线程,同时可以控制多个任务的程序称为多线程程序.与多进程(进程也就是WIN任务管理器中的)的区别在于,进程之间是独立的,不共享数据,而线程是共享数据的,同时线程更加简单,轻量,最后一个进程中可以有多个线程. 3.在多个线程运行的过程中,线程间的切换是由CPU控制的,这个切换是随机的.JVM的运行时就包含了多个线程.

2016年4月16日_JAVA学习笔记_第六章克隆

1.克隆也就是创建一个变量的拷贝,两者相互独立. person p = new person(); person p1 = p; //仅仅是重新创建另外一个变量,引用的是同一个东西 person p_clone = p.clone();//创建上一个变量的克隆,两者没有关系 2.

2016年4月2日_JAVA学习笔记_下午

1.一个重要的知识点:子类不能直接访问超类中的私有成员. 2.如果子类的构造器没有显式的调用超类的构造器,则将自动的调用超类默认的构造器(无参数).如果超类没有无参数构造器,并且子类构造器又没有调用超类的其他有参数构造器,那么将编译失败. 3.一个对象变量可以指示(引用)多种实际类型的现象被称为多态.在运行时能够自动选择调用哪个方法的现象称为动态绑定(调用的是实际引用对象的方法). 4.在一个包中直接运行对应的.class文件是不可行的.只能在包所在路径运行 java myBao.myClass

2016年4月2日_JAVA学习笔记_上午

1.昨天晚上忘记发布就直接关机了,算了.本就没写多少. 2.包这个小节还有类路径看书看的我一头雾水. 3.昨天看毕老师视频时讲到了类的四个权限等级,从封装性最好到最开放依次是,private,默认,protected,public. private:仅允许当前类进行访问: 默认:允许当前类和当前包进行访问: protected:允许当前类和当前包,以及其他包中的子类: public:允许所有人进行访问 4.在shell命令运行java时,需要注意类路径,如果当前目录下没有找到,会在classpa

2016年4月27日_JAVA学习笔记_JAVA中常见的API(一)String

1.String在JAVA中是一个单独的类,只不过是一种特殊的,专门用来表示字符串的类.之前接触到的创建方式很简单,就是跟C语言中创建变量一样, String aString = "This is a String."; //变量类型为String,变量名为aString,内容为"This is a String.". 在学习API时,接触到了一种特别的创建方式.因为String是一个类,那么就肯定可以用其构造器方法来创建相应的对象. String aString

2016年3月30日_JAVA学习笔记

1.今天早上起的还算早,8点半起的,明天争取更早吧. 2.今天把毕老师的视频面向对象的部分看完了,现在开心重新看JAVA核心技术-卷一,直接从第四章对象与类开始看起. 3.书中提到类之间有三种最常见的关系,依赖,聚合,继承. 依赖大概能理解,就是一个类使用了另外一个类的方法或者对象,继承就是父类与子类的关系.但是聚合一直搞不清楚,等有机会再弄清楚吧. 4.画了好大的篇幅来专门讲一个格林尼治时间类,搞不懂为什么,等有需要的时候再来学习吧. 5.跟毕老师的视频里提到的一样,对于类中创建的成员变量,不

2016年4月25日_JAVA学习笔记_Lock和Condition

1.在毕老师的视频里,首先介绍的是synchronized关键字作为同步,紧接着在多生产者和多消费者的例子当中就引出了Lock接口和Condition接口.而在书中是先介绍的Lock核Condition接口.我感觉Lock和Con接口比较复杂,相比于synchronized关键字来说需要做的事情太多,很繁琐,虽然功能可能强大很多,但是对于初学者来说先接触一个简单的关键字,从而学习到同步的概念是比较好的. 2.书中有一个简单的Lock接口例子 1 private Lock myLock = new

2016年3月27日_JAVA学习笔记

1.前一天晚上开通了博客,今天是第一天写博客,或者说是日记吧. 右手的骨折还没完全康复,也还不知道要多久.现在仍然是左手用鼠标,而且无名指明显也不会打字了.毕竟已经3个月没有怎么用过了,所以完全恢复应该还需要一段时间吧. 2.JAVA中存在有嵌套类的情况,所谓嵌套类就是在一个类中还存在着一个类,这个类以成员变量的形式存在.在毕老师的视频中介绍了几种内部类的调用方法. //外部.内部.方法为非静态, //外部.内部 n = new 外部().new 内部(); //n.show(); //外部和方