J2SE知识点摘记(九)
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知识点摘记(九)的更多相关文章
- J2SE知识点摘记(十九)
Collection 1.2.1 常用方法 Collection 接口用于表示任何对象或元素组.想要尽可能以常规方式处理一组元素时,就使用这一接口.Collection 在前面的大图也 ...
- J2SE知识点摘记(六)
1. static关键字的使用 static 关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类. static 修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯 ...
- J2SE知识点摘记(五)
1. 引用数据类型的传递 java用引用代替C++中的指针 fun()方法接收的参数是是Change c1,也就是说说fun()方法接受的是一个对象的引用,所以fun方法中所所做的操作就 ...
- J2SE知识点摘记(四)
1. 抽象类(abstract) 抽象类和抽象方法都必须用abstract关键字来修饰. 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象. 抽象方法只需声明,而不需实现. ...
- J2SE知识点摘记(三)
1. 在java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类.但在java中却允许多层继承. 2. 非内部Class只能被public或者defaul ...
- J2SE知识点摘记(二)
1. 对象的声明 "类名 对象名 = new 类名();"例子:Person P;//先声明一个Person类的对象p p=new Person();//用new关键字实例化 ...
- J2SE知识点摘记(一)
1. 数组的声明时无法指定数组的长度. 2. 一维数组的声明和内存的分配 "数据类型 数组名[]; //声明一维数组 数组名= new 数据类型[ ...
- J2SE知识点摘记-数据库(二)
一. 查询数据 注意sql的内容. 通过ResultSet接口保存全部的查询结果,通过Statement接口中的executeQuery()方法查询.查询之后需要分别取出.通过nex ...
- J2SE知识点摘记-数据库(一)
一. 数据库连接 在JDBC的操作过程中,进行数据库连接的主要步骤如下: 通过Class.forName()加载数据库的驱动程序.首先需要利用来自Class类中的静态方法forNam ...
随机推荐
- Qt3D教程
美其名曰教程 其实就是自己的学习之旅 惯例第一章是qt3d的安装 首先说下环境 Windows_Xp_sp3 下载链接 Qt library 4.8.5 下载链接 (在安装Qt library之前,需 ...
- Qt中实现菜单和工具栏功能
Qt创建菜单和工具栏: 一. temp.h文件的内容 1.定义类temp继承QMainWindow 2.添加Q_OBJECT , 构造函数 . 析构函数等内容 3.$重点内容 3.1定义QActio ...
- jQuery 动态绑定的点击事件
$(function () { , $_div = $('#test'); $('input[name=addbtn]').on('click', function () { $_div.append ...
- Normalize.css 介绍与源码解读
开始 Normalize.css 是一个可定制的 CSS 文件,使浏览器呈现的所有元素,更一致和符合现代标准;是在现代浏览器环境下对于CSS reset的替代. 它正是针对只需要统一的元素样式.该项目 ...
- 判断用户是pc访问还是手机访问
前天因为手机页面中点击无法链接53客服,就研究了下怎样通过js判断,用户是拿手机(ipad)访问,还是pc端访问, 如果是手机访问的话只需把链接通过attr修改a的链接地址~ <a class= ...
- Amazon MWS 上传数据 (二) 构造请求
上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...
- python魔术方法
在类中有一些特殊的方法具有特殊的意义,比如__init__和__del__方法,它们的重要性我们已经学习过了. 一般说来,特殊的方法都被用来模仿某个行为.例如,如果你想要为你的类使用x[key]这样的 ...
- linux下安装配置svn独立服务器
subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人. svn服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊. file:/// 直接版本库访问(本 ...
- rootvg 镜像
具体操作步骤如下 : a) 查看一下当前可用的硬盘: # lspv hdisk0 0002d74f0e69d97a rootvg ...
- 得到当前网址的域名 ASP.NET
HttpContext.Current.Request.Url.Host.ToString(); http://"是协议名 "www.test.com"是域名 " ...