`
junzai
  • 浏览: 14503 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

java

阅读更多
一、什么是线程
1)有时被称为轻量级进程,是程序执行流的最小单元。
2)线程的三种状态:就绪,阻塞,运行。
3)线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
二、线程属性
1)轻型实体
2)独立调度和分配的基本单位
3)可并发执行
4)共享进程资源
三、进程与线程
它们的区别在于,子进程和子线程有不同的代码和数据空间。而多个线程则共享数据空间,每个进程有自己的执行堆栈和程序计数器为其执行上下文。多线程显而易见是为了提高运行速度,节省时间。
通常一个进程中可包含若干个线程
主要区别:
1)地址空间和其他资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其他进程内不可见
2)通信:进程间通信IPC,进程可以直接读写进程数据段来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性
3)调度和切换:线程上下文切换比进程上下文切换要快得多
4)在多线程OS中,进程是不是一个可执行的实体
四、四种创建线程的方法
方法一:继承Thread类来实现线程
package 实现线程;
/**
* 线程类
* @author Administrator
*
*/
public class MyThread extends Thread{

public void run()
{
System.out.println(">>>>线程启动啦");
}
}


package 实现线程;
/**
* 启动线程
* @author Administrator
*
*/
public class mainTest {
public static void main(String[] args){
MyThread th=new MyThread();
th.start();
}

}

方法二:通过实现Runnable接口创建线程
package 实现线程;
/**
* 通过实现Runnable接口创建线程
* @author Administrator
*
*/
public class RunnableTest implements Runnable{

public static void main(String[] args){
RunnableTest rt=new RunnableTest();//创建Runnable对象
Thread th=new Thread(rt);//构造Thread对象
}

//线程运行入口
public void run() {
System.out.println(">>>线程运行啦!!!");

}

}

方法三:以内部类的方法创建线程
package 实现线程;
/**
* 测试匿名线程线程创建
* @author Administrator
*
*/
public class ThreadTest {
public static void main(String[] args){
ThreadTest tt=new ThreadTest();
tt.startMyThread();
}

/**
* 这个方法会启动一个匿名线程线程
*/
public void startMyThread() {
Runnable ru=new Runnable(){
public void run() {
System.out.println("线程执行啦!!!!!");
}

};
//最后,启动这个内部线程
Thread th=new Thread(ru);
th.start();
}

}

方法四:继承TimerTask类实现线程的定时执行
package 实现线程;

import java.util.Timer;
import java.util.TimerTask;
/**
* 使用定时器执行线程:
* @author Administrator
*
*/
public class TimerPrint extends TimerTask{

private int runCount=0;
public static void main(String[] args){
Timer time=new Timer();//创建一个定时器对象
TimerPrint tp=new TimerPrint();//创建一个定时任务对象
//调整这个定时任务在程序启动2秒后,每隔1秒运行一次
time.schedule(tp, 2000, 1000);
}

//线程运行时被调用
public void run() {
runCount++;
System.out.println(runCount+"次定时运行:"+System.currentTimeMillis()/1000);

}

}
当然,这里我是简单的用单线程进行举例。也可以同时用for循环同时启动多个线程。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

五、“监视线程”模型

六、线程的同步

七、生产/消费者模型

八、阻塞队列

时辰已不早,俺还是先睡一觉,理清思路明天补充完

分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包2

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包4

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java api最新7.0

    JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...

    java开源包11

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包4

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包6

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包9

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包5

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包8

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包10

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    java开源包1

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    java开源包3

    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...

    Java 中文入门学习手册合集[chm版]

    第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...

Global site tag (gtag.js) - Google Analytics