java 多线程

来源:互联网 发布:大数据的关键技术是 编辑:程序博客网 时间:2024/06/07 16:26

                             Java 多线程

 

 

 

进程是指运行中的应用程序,每一个进程都有自己的都立的内存空间。一个应用程序可以同时启动多个进程。

线程是指进程中的一个执行流程,有时也称为执行情景。一个进程可以由多个线程组成,即在一个进程中可以同时运行多个不同的线程,他们分别执行不同的任务,。当进程内的多个线程同时运行时,这种运行方式称为并发运行。

线程与进程的主要区别在于:每个进程都需要操作系统分配独立的内存空间地址,而同一进程中的所有线程在同一块地址空间中工作,这次线程可以共享同一块内存和系统资源,比如共享一个对象或者共享已经打开的一个文件。

1java线程的运行机制

java虚拟进程中,执行程序代码的任务是由线程来完成的,每一个线程都有个独立的程序计数器和方法调用栈

2、         线程的创建于启动

 创建线程有两种方式

(1)       扩展java.lang..Thread

(2)       实现Runnable接口

   2(1) Thread代表线程类它的主要两个方法是:

      run()——包含线程所执行的代码。

     Start()——用于启动线程。

 例

 

     

 主线程于用户自定义的的线程并发运行

 

一个线程只能被启动一次。

   2、(2)实现Runnable接口

Java不允许一个类继承多个类,因此一旦一个类继承了Thread类,就不能再继承其他的类。为解决这一问题,java提供了Runnable接口,它有一个run()方法

3、线程的状态转换

  3.1线程睡眠

Thread.sleep()方法

当一个线程执行sleep方法,它就会放弃cpu,转到阻塞状态。】

3.2 线程让步

Thread.yield()

sleep(方法和yield方法都是Thread类得静态方法,都会使当前处于运行状态的线程放弃cpu,把运行机会让给别的线程。

两者区别在于:

(1)sleep()方法会其他线程机会,不考虑其他线程的优先级,yield()方法只相同优先级或者更高优先级的线程一个运行机会。

(2)当线程执行了sleep(long millis)方法后,将转到柱塞状态,执行yield()方法后,将转到就绪状态。(3)sleep()方法声明抛出InterruptionException异常,而yield()方法没有声明抛出任何异常。

(4)sleep()方法比yield()方法具有更好的可移植性。

3.3 等待其他线程结束

Thread.join()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

原创粉丝点击