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. TCP/IP详解之:TCP

    第17章 TCP:传输控制协议 TCP提供了一种可靠的面向连接的字节流运输层服务 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务. TCP通过下 ...

  2. Arduino周边模块:传感器部件(温敏、光敏、湿敏)

    Arduino周边模块:传感器部件(温敏.光敏.湿敏) Arduino周边模块:传感器部件(温敏.光敏.湿敏) Arduino的模数转换 对于Arduino来说,它只认识数字量,模拟量对其来说就是一门 ...

  3. 轻松搞定javascript原型链 _proto_

    //如有错误或不同观点,欢迎批评与讨论! 首先,prototype出现的目的,是为了解决 代码重用 的问题 , prototype 相当于是在内存上划分出一个公共的区域, 专用于存放 实例化对象 的相 ...

  4. jchat:linux聊天程序2:MySQL

    该软件使用的数据库为MySQL,因为它免费.开源,在linux下几乎就是最好的选择. 首先要在mysql中root用户新建数据库并赋权给本用户: create database jchat; gran ...

  5. CSS自学笔记(10):CSS3盒子模型

    CSS3为CSS技术的升级版本.最新版本. 就CSS而言,它是一个模块,是一个庞大而又复杂的模块,但是在CSS3中,将这一个庞大的模块分解为一个个容易理解的同时又很精简的小模块,同时CSS3中又添加了 ...

  6. lua学习笔记(2)-常用调用

    assert(loadstring("math.max(7,8,9)"))dofile("scripts/xxx.lua")math.floor()math.r ...

  7. MySQL----information-schema数据库相关权限的说明。

    MySQL中的information_schema数据库比较特别有如下几个要注意的地方. 1.就算是一个新创建的用户,也就是说这个用户只有一个usage权限.它都可以查看informatoin_sch ...

  8. 去掉ILDasm的SuppressIldasmAttribute限制

    原文:去掉ILDasm的SuppressIldasmAttribute限制 今天本打算汉化一个.Net程序的,当用ILDasm打开的时候,出现了"受保护模块—无法进行反汇编"的错误 ...

  9. ab压力测试报错: apr_socket_recv: Connection reset by peer (104)

    使用ab对网站进行压力测试,开始设置并发500,可以正常使用,当设置并发为1000,则报错: apr_socket_recv: Connection reset by peer (104) 改服务端a ...

  10. Formiko总结整数十进制转换二进制原理

    引子: 为什么十进制转二进制的“辗转相除记录余数倒序输出”的算法是正确的?这个问题陪伴了Formiko半年. 实践: 实践一:把十进制数100转换成二进制数的图   上图和和下图唯一的区别在最后一位上 ...