java多线程学习笔记(一)

一.进程与线程的概念

现在操作系统是多任务操作系统,而多线程是实现多任务的一种方式。

进程是指一个内存中运行的应用程序,没个进程都有一块独立的内存空间,一个进程中可以启动多个线程。比如在windows系统中,一个运行的exe就是一个进程。

线程是指进程中的一个执行流程,一个进程可以运行多个线程。比如java.exe进程中可以运行很多进程。线程总是属于某个进程,进程中的多个线程共享进程的内存。

“同时”执行是人的感觉,其实多个线程是轮换执行的。

二.java中的线程

在java中,“线程”是指两个不同的事情:

1、java.lang.Thread类的一个实例;

2、线程的执行。

使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。

一个Thread类实例只是一个对象,像java中的任何其他对象一样,具有变量和方法,生死与堆上。

java中,每一个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。

一个java应用总是从main()方法开始执行,main()方法运行在一个线程内,它被称为主线程。

一旦创建一个新的线程,就产生一个新的调用栈。

线程总体分两类:用户线程和守候线程。

当所有用户线程执行完毕的时候,JVM自动关闭。但守候线程却不独立与JVM,守候线程一般由操作系统或者用户自己创建的。

三.线程的创建与启动

1、扩展java.lang.Thread类

此类中有个run()方法,应该注意其用法:

public void run()

如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run()方法;否则,该方法不执行任何操作并返回。

Thread子类应该重写该方法。

2、实现java.lang.Runnable接口。

void run()

使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run()方法。

方法run的常规协定是,它可能执行任何所需的操作。

四.实例化线程

1、如果是扩展java.lang.Thread类的线程,则直接new即可

2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:

Thread(Runnable target)//实现了Runnable接口的实例

Thread(Runnable target, String name)//String name 线程的名字。这个名字可以在建立Thread实例后通过Thread类的setName方法设置。如果不设置线程的名字,线程使用默认的线程名:Thread-N,N是线程建立的顺序,是一个不重复的正整数。

Thread(ThreadGroup group, Runnable target) //ThreadGroup group 当前建立的线程所属的线程组(这里牵扯到线程组的概念)。如果不指定线程组,所有的线程都被加到一个默认的线程组中。

Thread(ThreadGroup group, Runnable target, String name) 

Thread(ThreadGroup group, Runnable target, String name, long stackSize)//long stackSize 线程栈的大小,这个值一般是cpu页面的整数倍。如x86的页面大小是4KB。在x86平台下,默认的线程大小是12kb


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值