Java中的多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的多线程相关的知识,希望对你有一定的参考价值。

一.概念及特点

    1.概念

          进程:计算机运行的应用程序。(多进程作用:提高CPU的使用率,不提高速度);

          线程;一个进程中的执行场景,一个进程可以包多个进程。(多线程作用:提高应用程序的使用率,不提高速度)。

    2.内存特点

          进程和进程之间的内存是独立的;

          线程和线程共享“堆内存的方法区内存”,栈内存是独立的,一个线程一个栈。

    3.java程序的运行原理

         Java命令启动Java虚拟机,启动JVM,等同于启动了一个应用程序,、表示启动了一个进程,该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法,所 以          main方法运行在主线程中。

二.线程的创建和启动

    1.实现多线程的第一种方式: 

         第一步: 继承Java.lang.Thread

         第二步;重写run方法

例:

技术分享
 1 class  Threadtest01
 2 {
 3     public static void main(String[] args)   //main方法在主线程
 4     {
 5         //1.创建线程
 6         Thread t = new p();
 7         //2.启动线程
 8         t.start();      /*启动t线程,执行后,t线程瞬间结束,JVM再分配一个新的栈给t线程
 9                           run方法不需要手动调用,系统线程启动之后自动调用run方法。*/
10     
11        for(int i=0;i<100;i++)   //在主线程中运行
12         {
13            System.out.println("main....."+i);
14         }
15     }
16 }
17 /*
18    在多线程中,main方法结束后只是主线程踪没有方法栈帧了,但
19    其他线程中或者其他栈中还有栈帧,main方法结束,程序可能还在运行
20 */
21 
22 //3.定义一个线程
23 class p extends Thread
24 {
25     //重写run方法
26     public void run ()
27     {
28          for(int i=0;i<100;i++)
29         {
30            System.out.println("run...."+i);
31         }
32     }
33 }
34 /*
35 运行部分结果如下:
36 main.....0
37 main.....1
38 main.....2
39 run....0
40 main.....3
41 run....1
42 main.....4
43 run....2
44 main.....5
45 run....3
46 main.....6
47 run....4
48 main.....7
49 run....5
50 main.....8
51 run....6
52 */
View Code

上述代码的图解如下:

技术分享

     2.实现多线程的第二种方式:

           第一步:写一个实现类java,lang.Runnable;接口

          第二步:实现run方法

     例:

技术分享
 1 package test;
 2 
 3 class Main 
 4 {
 5     public static void main(String[] args) 
 6     {
 7         //创建线程
 8         Thread t = new Thread(new p());
 9         //启动线程
10         t.start();
11         for(int i = 0;i<100;i++)
12               System.out.println("mian..."+i);
13         
14     }
15 }
16 //优先,一个类实现接口之外保留了类的继承
17 class p implements Runnable
18 {
19     public void run()
20     {
21         for(int i = 0;i<100;i++)
22           System.out.println("run..."+i);
23     }
24 }
25 /*
26  * 部分运行结果:
27  * run...8
28 mian...10
29 run...9
30 mian...11
31 run...10
32 mian...12
33 run...11
34 mian...13
35 run...12
36  */
View Code

 

以上是关于Java中的多线程的主要内容,如果未能解决你的问题,请参考以下文章

Java中的多线程

Java中的多线程 模拟网络抢票代码

什么是JAVA的多线程?

如何限制Java程序中的多线程?

JAVA中的多线程

Java的多线程学习