一、线程的概念
1、什么是线程
线程是程序中的一个执行流。一个执行流是由CPU运行程序代码并操作程序的数据所形成的。因此,线程被认为是以CPU为主体的行为。在Java中线程的模型就是一个CPU、程序代码和数据的封装体。
2、Java中的线程模型
如图,Java线程模型包含3个方面:
1、一个虚拟的CPU
2、该CPU执行的代码。
3、代码所操纵的数据
二、线程的创建
1、类Thread
在eclipse中按F3或点击右键,在查看源代码,可以了解到该类的构造方法和一些操作方法。
2、线程创建方法一
通过继承(extends)java.lang包的Thread类,然后重写其中的run()方法即可。例如
public class Test{ public static void main(String args[]){ //线程对象创建 MyThread mt = new MyThread(); mt.start; } } //创建一个线程类,继承了Thread public class MyThread extends Thread{ public void run(){ int i=0; while(true){ System.out.println( i + "+Hello;"); } } }
3、线程创建方法二
通过书本和上网了解到,线程还可以通过实现Runnable接口创建线程。
public class Test{ public static void main(String args[]){ //线程对象创建 MyThread mt = new MyThread(); mt.start; } } //创建一个线程类,实现接口Runnable public class MyThread implements Runnable{ public void run(){ int i=0; while(true){ System.out.println( i + "+Hello;"); } } }
4、比较两个程序,可以发现线程实现Runnable接口我们还可以继承其他类
三、线程的状态及控制:暂停,继续,停止等
1、通过new创建线程对象,Java线程提供了stop(),suspend()和resume()方法来控制线程的停止,暂停和继续,但不推荐使用这些方法。
2、介绍我使用线程时控制线程的方法
public class Test{ public static void main(String args[]){ DrawThread dt = new DrawThread(); dt.start(); //dt.setSuspend(true);//暂停 //dt.setSuspend(false);//继续 //dt.setStop(true);//停止 } } public class DrawThread extends Thread { //暂停标记 private boolean suspend; private String control=""; //停止标记 private boolean stop; private int i=0; //控制线程,暂停置suspend为true,继续置suspend为false public void setSuspend(boolean suspend){ if(!suspend){ synchronized (control){ control.notify(); } } this.suspend=suspend; } //控制线程,停止置stop为true public void setStop(boolean stop){ this.stop = stop; } public void run(){ while(true){ //线程休眠,一定要休眠,不然对电脑负荷太高 try { Thread.sleep(50); } catch (Exception e) { } //线程暂停与继续的控制 synchronized (control) { if (suspend) { try { control.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } //停止线程 if(stop){ break; } //线程动作 System.out.println(i+"+Hello;"); i++; } }
另外,在线程run方法中自己编写的方法要放在休眠之后,线程异常的出现会减少很多。
相关推荐
电子书相关:包含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 线程