- 浏览: 72882 次
文章分类
最新评论
1.线程的定义
a.扩展java.lang.Thread类
/** * 测试扩展Thread类实现的多线程程序 * * @author */ public class TestThread extends Thread{ public TestThread(String name) { super(name); } public void run() { for(int i = 0;i<5;i++){ for(long k= 0; k <100000000;k++); System.out.println(this.getName()+" :"+i); } } public static void main(String[] args) { Thread t1 = new TestThread("阿三"); Thread t2 = new TestThread("李四"); t1.start(); t2.start(); } }
执行结果:
阿三 :0
李四 :0
阿三 :1
李四 :1
阿三 :2
李四 :2
阿三 :3
阿三 :4
李四 :3
李四 :4
Process finished with exit code 0
b.实现java.lang.Runnable接口
/** * 实现Runnable接口的类 * * @author */ public class DoSomething implements Runnable { private String name; public DoSomething(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { for (long k = 0; k < 100000000; k++) ; System.out.println(name + ": " + i); } } } /** * 测试Runnable类实现的多线程程序 * * @author leizhimin 2008-9-13 18:15:02 */ public class TestRunnable { public static void main(String[] args) { DoSomething ds1 = new DoSomething("阿三"); DoSomething ds2 = new DoSomething("李四"); Thread t1 = new Thread(ds1); Thread t2 = new Thread(ds2); t1.start(); t2.start(); } }
执行结果:
李四: 0
阿三: 0
李四: 1
阿三: 1
李四: 2
李四: 3
阿三: 2
李四: 4
阿三: 3
阿三: 4
Process finished with exit code 0
2.线程状态
线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:
1、新状态:线程对象已经创建,还没有在其上调用start()方法。
2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。
3、运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。
4、等待/阻塞/睡眠状态:这是线程有资格运行时它所处的状态。实际上这个三状态组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态。
5、死亡态:当线程的run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。 如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。
发表评论
-
java调用js中写入的方法
2017-08-08 14:52 390ScriptEngineManager manager = n ... -
遍历object对象
2012-11-28 09:24 805如 {'name':'李大牛','age':'24'} 生 ... -
日期的使用
2012-11-23 18:23 6951.Calendar和date的转换 ca.setTime(d ... -
根据日期判断出星期
2012-11-14 16:48 630function getWeekString(date){ ... -
js Date转换成String
2012-09-28 11:25 1158Date.prototype.format = functio ... -
MessageFormat
2012-09-04 18:27 656MessageFormat用来格式化一个消息,通常是一个字符串 ... -
switch的参数类型
2012-08-20 14:56 918引用switch(expr1)中,expr1是一个整数表达式, ... -
String倒转
2012-08-20 10:54 767把string转换成byte数组,再按照一定的规则编译这个数组 ... -
lock和Condition
2012-07-11 17:24 545主要相同点:Lock能完成synchronized所实现的所有 ... -
String
2012-06-29 17:42 742String类是final的,不可被继承。public fin ... -
多线程示例
2012-06-14 12:23 724public class Test implements Ru ... -
List set和map
2012-06-06 11:10 776Collection ├List │├Linked ... -
数组和集合
2012-06-05 18:51 6571.数组和集合的定义 AType[ ] a=new ATy ... -
操作xml文件
2012-05-03 13:48 7281. 介绍 1)DOM(JAXP Crimson解析 ... -
IO流的基本概念
2012-04-26 17:52 7501.基类 InputStream,OutputStream.都 ... -
文件的复制和删除
2012-04-26 17:37 660/** * 删除文件,通过文件的类型 * ...
相关推荐
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...
Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程
分析java线程日志的工具,使用jstack把java线程日志dump下来,然后上传到该工具,就可以查看线程阻塞情况等信息。
4种常用Java线程锁的特点,性能比较、使用场景 线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发...
Java线程模块Java线程之秒表新手学习Java线程模块时,利用Java中设置线程的暂停间隔,做的简易秒表
java线程.pdf java 学习java
java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...
Java线程状态流转图
Java线程Java线程Java线程Java线程Java线程Java线程
有点乐趣,小java线程监控程序, 小java线程监控程序 小java线程监控程序
Java线程.pdf
Java线程使用教程
Java线程pdf帮助文档
java线程深入讲解,可以了解java线程同步语安全,实现的方法和synchronized锁的使用与安全控制等等,谁用谁知道好用
Java 线程通信示例 源代码 多线程之间通信,值得收藏
Java 线程的学习和使用Java 线程的学习和使用
这是一个关于Java线程的ppt文件,燕山大学信息学院计算机系 李 峰
java 线程java 线程java 线程java 线程java 线程java 线程java 线程java 线程java 线程