java多线程学习笔记(一)

原创 2018年04月17日 10:32:41

一.进程与线程的概念

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

进程是指一个内存中运行的应用程序,没个进程都有一块独立的内存空间,一个进程中可以启动多个线程。比如在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


java学习笔记5(java多线程)

  • 2011年08月30日 19:05
  • 413KB
  • 下载

java学习笔记4(java虚拟机)

  • 2011年08月30日 19:04
  • 379KB
  • 下载

java学习笔记2(多线程)

  • 2011年08月30日 19:02
  • 210KB
  • 下载

java多线程学习笔记(一)!更好的理解多线程

1.线程的创建 之前知道java中一个多线程的创建方法是继承Thread类或者实现Runable接口,但是看不懂下面这种创建线程的方法 第一种 new Thread(new Runnable()...
  • a347911
  • a347911
  • 2016-11-15 09:56:01
  • 552

Java并发编程实战学习笔记(一)-线程安全性

编写线程安全的代码的核心是要对状态访问操作进行管理,尤其是对共享的和可变的状态访问。 这里的对象的状态可以看成是存储在状态变量(例如实例或静态域)中的数据。1.什么是线程安全线程安全性定义中最核心的...
  • wangbingcsu
  • wangbingcsu
  • 2016-01-15 19:22:41
  • 1854

多线程学习笔记与学习

  • 2011年07月04日 08:28
  • 85KB
  • 下载

学习笔记 02 --- Java多线程

学习笔记(20170106)--- Java多线程 02 学习笔记(20170105)---Java多线程 01 synchronized关键字: 脏读:在多线程中,难免会出现多个线...
  • tianya3530
  • tianya3530
  • 2017-01-10 10:14:25
  • 276

学习笔记 01 --- Java多线程

新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,...
  • tianya3530
  • tianya3530
  • 2017-01-05 16:14:55
  • 187

Java分布式应用学习笔记05多线程下的并发同步器

  • 2011年09月28日 17:24
  • 210KB
  • 下载

Java 网络编程学习笔记(一)基本网络概念

网络分层 在正式开始学习javaweb之前,需要了解一些基本的概念,对于一些有用的概念这里做一个笔记。    事实上整个网络是一个分层模型,可以简单地分为:主机网络层(host-to-work...
  • My_dearest_
  • My_dearest_
  • 2018-01-27 21:14:03
  • 68
收藏助手
不良信息举报
您举报文章:java多线程学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)