Java学习:多线程(1)

原创 2007年09月25日 16:38:00

1.  程序,进程和线程基本概念。

程序:是计算机指令的集合,它以文件的形式存储在磁盘上。


进程:是一个程序在其自身的地址空间中的一次执行活动。
         进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系

统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。


线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。


         线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线

程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进

程简单。

n

 2.创建线程的两种方法

(1) 用Thread类创建线程

         要实现多线程,必须编写一个继承了Thread类的子类,子类要覆盖Thread类中的run函数,在子类的run函

 

数中调用想在新线程上运行的程序的代码。启动一个线程,调用Thread子类对象的start方法,Thread类对象的

start方法将产生一个新的线程,并在该线程上运行该Thread类对象中的run方法,根据面向对象的多态性,在该

线程上实际运行的是Thread子类对象中的run方法。例如,计算大于某一规定值的质数的线程可以写成:

 class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
     }

 

然后,下列代码会创建并启动一个线程:

 

     PrimeThread p = new PrimeThread(143);
     p.start();
(2)使用Runnable接口创建多线程
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类
 
的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示: 
 
class PrimeRun implements Runnable { 
long minPrime; 
PrimeRun(long minPrime) { 
this.minPrime = minPrime;
} 
public void run() { 
// compute primes larger than minPrime
 . . . 
} 
} 
 
然后,下列代码会创建并启动一个线程: 
 
     PrimeRun p = new PrimeRun(143);
     new Thread(p).start();
实例:
public class ThreadDemo{
 public static void main(String args[]) {
  TestThread tt = new TestThread();
  //tt.start();
  Thread t = new Thread(tt);
  t.start();
  while(true)
  {
   System.out.println("main thread is running");
  }
  
}

 static class TestThread implements Runnable
 {
  public void run()
  {
   while(true)
   {
    System.out.println(Thread.currentThread().getName()+" is running");
   }
  }
 }

 

}
(3)两种实现多线程方法的对比分析
    实现Runnable接口相对于继承Thread类来说,有如下显著的好处:
    a) 适合多个相同的程序代码的线程去处理同一资源的情况,把虚拟CPU同程序的代码,
       较好的体现了面向对象的设计思想.
    b)可以避免由于java的单继承特性带来的局限。当我们碰到这样的情况,即当我们要将已经继承了
       某一个类的子类放入多线程中的时候,由于一个类不能同时有两个父类,所以不能用继承Thread类
       的方式,那么这个类就只能采用实现Runnable接口的方式了。
    c)有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。

 

 

Java多线程学习(吐血超详细总结)

本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。...
  • Evankaka
  • Evankaka
  • 2015年03月14日 13:13
  • 70855

[java多线程]多线程学习路线图(不断更新)

多线程学习路线图
  • cq1982
  • cq1982
  • 2014年08月23日 17:27
  • 768

java学习视频day01多线程Thread

package cn.itcast.thread; /* 线程: 多线程的好处: 多线程解决了在一个进程中同时可以执行多个任务代码的问题。 自定义线程的创建方式: 方式一:继承Threa...
  • honghong75042
  • honghong75042
  • 2016年10月13日 09:18
  • 369

Java多线程(全)学习笔记(上)

资源下载地址:http://download.csdn.net/detail/cloudyxuq/3763101 一.线程的创建和启动 java使用Thread类代表线程,所有的线程对象都必须是T...
  • Cloudyxuq
  • Cloudyxuq
  • 2011年11月06日 21:07
  • 8192

java多线程学习资料网站集合

最近找工作,一直在看多线程,发现了一个 http://www.cnblogs.com/skywang12345/p/java_threads_category.html...
  • u012978884
  • u012978884
  • 2014年10月04日 11:43
  • 504

Java多线程学习心得

java中的多线程 在java中要想实现多线程,有两种手段,一种是继承Thread类,另外一种是实现Runable接口。 对于直接继承Thread的类来说,代码大致框架是: ...
  • xiaosannimei
  • xiaosannimei
  • 2015年08月17日 17:43
  • 237

Java多线程系列目录

原文地址: http://www.cnblogs.com/skywang12345/p/java_threads_category.html Java多线程系列目录(共43篇) ...
  • bigtree_3721
  • bigtree_3721
  • 2016年05月08日 12:23
  • 538

java多线程学习1

1. runnable接口和继承thread两种方法都可以实现用多线程运行任务, 但前者更像是定义一个任务, 而这个任务可以提交给线程去执行, 后者更像单独定制一个线程.2. 只有调用thread的s...
  • fan68
  • fan68
  • 2011年07月22日 08:35
  • 185

java学习[1]_多线程

多线程简要介绍java中多线程相关知识 (一)多线程介绍: 随着CPU进入双核、多核时代,多线程的优势越来越明显。多线程是Java中的并发机制,表示能够在同一时间内同时执行多个操作。 这里举个多线...
  • YuXiao_V
  • YuXiao_V
  • 2017年02月06日 20:29
  • 179

java学习--多线程(1)

多线程之概念与原理 一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程...
  • jbfsdzpp
  • jbfsdzpp
  • 2014年12月01日 15:20
  • 277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习:多线程(1)
举报原因:
原因补充:

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