1、        多线程指的是在单个进程中可以同时运行多个不同的线程,执行不用的任务.多线程意味着一个程序的多行语句可以看上去几乎同时进行.

同样作为基本的执行单元,线程是划分得比进程更小的执行单位.

每个进程都有一段专用的内存区域.与此相反,线程却共享内存单位(包括代码和数据),通过共享的内存单元来实现数据交换,实时通信与必要的同步操作.

2、              单线程:

创建TestThread对象之后调用run()方法,输出"TestThread在运行",最后执行main方法中的循环,输出"main线程在运行".

3、        要使一个类可激活线程,必须按照下面的语法来编写.

Class 类名称 extends Thread//从Thread类拓展出子类

{

属性....

方法....

修饰符 run(){....以线程处理的程序...;}//覆写Thread类里的run()方法

}

 
   

要启动线程必须调用Thread类之中的start()方法,而调用了start()方法,也就是调用run()方法.

4、       
由于java单继承的缘故,使用Runnable接口来创建线程.多线程的定义语法如下

class
类名称 implements Runnable

{

属性...

方法...

修饰符
run(){...以线程处理的程序...;}

}得到

Runnable接口中并没有start()方法,所以一个类实现了Runnable接口也必须用Thread类中的start()方法来启动多线程.在Thread类中有这样一个构造方法:

public Thread(Runnable target)

将一个Runnable接口的实例化对象作为参数去实例化Thread类对象.

5、       
Thread类实现了Runnable接口,也就是说Thread类也是Runnable接口的一个子类.

用Thread类(继承Thread类)实际上无法达到资源共享的目地.也就是说通过"new
Thread().start();"启动的多个线程,实际各个对象各自占有各自的资源.而实现Runnable接口(继承Runnable类)则是启动多个线程对象,操纵同一个资源,从而实现了资源共享的目的.

J2SE知识点摘记(八)的更多相关文章

  1. J2SE知识点摘记(十八)

    Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1)  Collection . 一组对立的元素,通常这些元素都服从某种规则.List必须保持元素特定的顺序,而Set 不能有重复 ...

  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. DOM常见属性及用法

    1:innerHTML.outerHTML.innerText.outerText innerHTML: 设置或获取位于对象起始和结束标签内的HTML. outerHTML: 设置或获取对象及其内容的 ...

  2. poj 1450 Gridland

    Gridland Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  3. 算法竞赛中G++编译器的编译指令简单说明

    算法竞赛使用的在线判题平台在FAQ会给出提交的代码是通过什么指令进行编译的.比如hustoj给出的c++编译指令通常是: C++: g++ Main.cc -o Main -fno-asm -O2 - ...

  4. 点击上下页,实现图片滚动的jquery代码

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  5. img标签的方方面面

    <IMG>标签的方方面面 <img>标签是页面上最为重要的元素之一.很难想象一个页面上没有图片的样子,这样的页面效果将会大打折扣. 任何一个前端工程师想必对<img> ...

  6. java接口的理解

    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,[接口名] [对象名]=new [实现接口的类],这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口 ...

  7. ThinkPHP 3.1 404页面的设置

    在很多网站中都会有使用404页面的时候,在ThinkPHP框架中该如何设置呢,接下来我介绍其中一种方法 1.首先要在Lib/Action 下建立EmptyAction.class.php模块内容如下: ...

  8. pragma comment的使用

    该宏放置一个注释到对象文件或者可执行文件. #pragma comment( comment-type [,"commentstring"] ) comment-type是一个预定 ...

  9. CC++初学者编程教程(4) 安装Oracle12c于Windows Sever2012

    我们开启虚拟机 Windows Sever2012启动中. 3.看到WindowsSever2012的桌面. 我们解压缩两个文件, winx64_12c_database_1of2.zip,winx6 ...

  10. 用MFC实现OpenGL编程

    一.OpenGL简介 众所周知,OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口.但最近几年它成为一个非常优秀的开放式 ...