Java与多线程

点击打开链接--------android培训java培训、期待与您交流!-----------

 

一、Java语言的多线程需要操作系统的支持,以前古老的DOS操作系统(V 6.22)是单任务的还没有线程的概念,目前使用的一些操作系统大多都是多任务操作系统支持多线程。

 

进程的概念:

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

线程的概念:

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

 扩展:

“同时”执行是人的感觉,大家都知道CPU有个时钟周期,在每一秒内只能干一件事,所以线程之间实际上轮换执行。

 

二、Java中的线程

 

Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的。每用java命令启动一个java应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程,就是它自己。在这个JVM环境中,所有程序代码的运行都是以线程来运行。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新Thread对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。同时JVM也负责线程的调度。线程调度是值按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和抢占式调度。分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;抢占式调度是根据线程的优先级别来获取CPU的使用权。JVM的线程调度模式采用了抢占式模式

 

在Java中,多线程的实现有两种方式:

1.    扩展java.lang.Thread类

class Demo extends Thread

{

  public void run()

  {

   for(int i=0;i<5;i++)

      System.out.println(“demo run:”+i);

}

}

class ThreadDemo

{

  Public static void main()

  {

   Demo d=new Demo();//创建好一个线程

   d.start();//开启线程并执行相应的run()方法

   d.run();//仅仅是对象调用方法,而线程创建了并没有执行。

   for(int i=0;i<10;i++)

      System.out.println(“Hello word:”+i);

}

}

注:覆盖run方法的原因是存储该线程要运行的代码。

2、实现java.lang.Runnable接口

步骤:

1、定义类实现Runnable接口

2、覆盖Runnable接口中的run方法,将线程要运行的代码存放在该run方法中。

3、通过Thread类建立线程对象。

4、将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。

5、调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

Class num implements Runnable

{

Private int num=100;

Public void run()

{

While(true)

{

If(num>0)

{

System.out.println(Thread.currentThread().getName()+”----”+num--);

}

}

}

}

Class NumDemo

{

Public static void main()

{

num n=new num();

Thread t1=new Thread(n);

Thread t2=new Thread(n);

Thread t3=new Thread(n);

Thread t4=new Thread(n);

t1.start();

t2.start();

t3.start();

t4.start();

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值