1、         线程操作的一些方法

方法名称              方法说明

public static int activeCount()             返回线程组中目前活动的线程的数目

public static native Thread  currentThread()           返回目前正在执行的线程

public void destroy()            销毁线程

public static boolean interrupted()       判断目前线程是否被中断

public final native boolean isAlive()       判断线程是否在活动

public void run()               执行线程

public final void setName()                 设定线程名称

public native synchronized void start()                 开始执行线程

public String toString()                返回代表线程的字符串]

public static native void yield()                  将目前正在执行的线程暂停,允许其他线程执行

分别调用了printMsg()方法,一个从多线程run()方法中调用,一个是从main()方法中调用.

main()方法也是一个线程,实际上在命令行中运行java命令时,就启动了一个jvm的进程,默认情况此进程会产生两个线程:一个是是main()方法线程,另外一个就是垃圾回收(GC)线程.

在"t1.start();"前面可以设置线程的名称,"t1.setName("test thread");".

2、              判断线程是否启动

调用start()方法前,t1.isAlive()=false

刚调用start()方法时,t1.isAlive()=true

main()方法快结束时调用isAlive]()方法,此时的状态不再固定,有可能是true,有可能是false.

3、        后台线程与setDaemon()方法

如果某个线程对象在启动(调用start()方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程.

因为它是后台线程,因此整个进程在在主线程结束时就随之终止进行了.这验证了进程中只有后台线程进行时,进程就会结束的说法.

4、              线程的强制进行

5、        本程序启动了两个线程,一个是main()线程,一个是pp线程.调用join()方法之后,只有pp的线程对象在在运行,也就是说join()方法是用来强制某一线程的运行.

由上可见,pp线程中的代码被并入到了main()线程中,也就是pp线程中的代码不执行完,main线程中的代码就只能一直等待.除了无参数的join方法外,还有两个带参数的join方法,分别是join(long millis)和join(long millis,int nanos),他们的作用是指定合并时间,前者精确到毫秒,后者精确到纳秒,意思是两个线程合并指定的时间后,又开始分离,回到合并前的状态.

6、        线程的休眠

线程的休眠主要是让出CPU给别的线程.必须通过try{...}catch(...){...}方法.

因为每次运行时都需要先休眠一会儿.由于使用sleep()方法会抛出一个InterruptedExcepion,所以在程序中需要用try...catch()捕获.(捕获之后什么也没做)

7、        关于什么时候直接调用"ThreatTest t=new ThreatTest()"再使用 "t.start()",什么时候先使用"ThreatTest t=new ThreatTest()","Thread pp=new Threat(t)"装入target,再通过 "pp.start(t);"后者因为使用new   Threat(target)实例化的只有Threat类中的方法可以使用,但是前者可以使用t类自定义的方法.

一般继承于Thread类的使用前者,而继承于Runnable接口的使用后者.

8、        线程的中断

当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它他.例子:"Thread对象.interrupt();"通过调用Thread对象的isInterrupted()方法来查询是否当前线程中断.例子:"Thread对象.isInterrupt();"但是让线程开始休眠,此时线程已经被中断,所以这个时候会抛出中断异常,抛出中断异常之后会消除中断标志,随意最后在判断是否中断的时候,会会返回线程未中断.

J2SE知识点摘记(九)的更多相关文章

  1. J2SE知识点摘记(十九)

    Collection 1.2.1         常用方法 Collection 接口用于表示任何对象或元素组.想要尽可能以常规方式处理一组元素时,就使用这一接口.Collection 在前面的大图也 ...

  2. J2SE知识点摘记(六)

    1.        static关键字的使用 static 关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类. static 修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯 ...

  3. J2SE知识点摘记(五)

    1.        引用数据类型的传递 java用引用代替C++中的指针 fun()方法接收的参数是是Change c1,也就是说说fun()方法接受的是一个对象的引用,所以fun方法中所所做的操作就 ...

  4. J2SE知识点摘记(四)

    1.        抽象类(abstract) 抽象类和抽象方法都必须用abstract关键字来修饰. 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象. 抽象方法只需声明,而不需实现. ...

  5. J2SE知识点摘记(三)

    1.         在java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类.但在java中却允许多层继承. 2.         非内部Class只能被public或者defaul ...

  6. J2SE知识点摘记(二)

    1.    对象的声明 "类名 对象名 = new 类名();"例子:Person P;//先声明一个Person类的对象p p=new Person();//用new关键字实例化 ...

  7. J2SE知识点摘记(一)

    1.        数组的声明时无法指定数组的长度. 2.        一维数组的声明和内存的分配 "数据类型    数组名[]; //声明一维数组     数组名=  new 数据类型[ ...

  8. J2SE知识点摘记-数据库(二)

    一.          查询数据 注意sql的内容. 通过ResultSet接口保存全部的查询结果,通过Statement接口中的executeQuery()方法查询.查询之后需要分别取出.通过nex ...

  9. J2SE知识点摘记-数据库(一)

    一.          数据库连接 在JDBC的操作过程中,进行数据库连接的主要步骤如下: 通过Class.forName()加载数据库的驱动程序.首先需要利用来自Class类中的静态方法forNam ...

随机推荐

  1. js,jQuery数组常用操作小结

    一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...

  2. Android 更换系统字体......

    Android 更换系统字体...... 原文:http://vision-apps.blogspot.hk/2012/02/android-better-way-to-apply-custom-fo ...

  3. View的事件分发机制

    一.点击事件的传递规则 传递事件的主要方法: public boolean dispatchTouchEvent(MotionEvent ev) 如果事件能够传递到当前View,则该方法一定会被调用. ...

  4. A Byte of Python 笔记(3)运算符和表达式

    第5章 运算符与表达式 大多数语句(逻辑行)都包含表达式.例子,如 2 + 3.一个表达式可以分解为运算符和操作数. 运算符 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.'a' ...

  5. [原创]NT系统信息察看工具 : NtInfoGuy

    原文链接:[原创]NT系统信息察看工具 : NtInfoGuy 对于windows的内部,我们有太多的东西需要了解,认知.我们非凡的.从不知足的探求本性驱使我们要 拨开迷雾得见青天.太多的木马,病毒, ...

  6. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法(android)

    final double x_pi = 3.14159265358979324 * 3000.0 / 180.0; public GeoPoint bd_encrypt(GeoPoint point) ...

  7. Cacti完全使用手册 ( 让你快速个性化使用Cacti )

    I.总览                                              Cacti 和Nagios的监控体系可以说是使用广泛而且支持丰富的国内外的运维人员都需要掌握的一套监 ...

  8. DataTables warning 错误警告

    今天使用 Charisma 框架的 jquery datatable 插件时出现如下错误: 搜索才发现 DataTables 目前不支持有单元格合并的表格.而且只要单元格数目不同就会有错误,不能使用搜 ...

  9. #include <assert.h>

    assert宏 适用于软件测试.调试.排错 被除数不能为0,assert可以用于检测被除数是否为0 #define _CRT_SECURE_NO_WARNINGS //#define NDEBUG// ...

  10. Yii国际化

    Yii版本:1.1.13 1.将CMessageSource的$forceTranslation属性改为true Yii::app()->messages->forceTranslatio ...