java多线程

作者: java大哥 | 来源:发表于2018-01-11 14:12 被阅读0次

ackageThreadDemo;/**

* 多线程

*      程序:一组指定的集合(没有运行的程序)

*      进程:正在执行的程序。负责获取CPU内存资源的

*      线程:进程中的一个组成部分,负责被CPU执行(CPU调度)

*

*  注:

*          一个进程至少有一个线程,线程是进程的组成部分,线程结束,进程不一定结束,

*          但是进程结束,线程就一定会结束。

*

* java中线程的实现方式:

*          继承Thread类:

*              [1]继承Thread类

*              [2]重写run()方法

*              [3]创建对象,调用start方法。启动线程

*/publicclassMyThreadextendsThread{publicMyThread(String name){super(name);    }@Overridepublicvoidrun() {for(inti =1;i<=5;i++){//获取当前线程及名称System.out.println(Thread.currentThread().getName()+"\t第"+i+"次执行....");            }        }publicstaticvoidmain(String[] args) {//创建对象MyThread mt  =newMyThread("小琪");        MyThread mt1 =newMyThread("phoebe");        MyThread mt2 =newMyThread("菲比");        MyThread mt3 =newMyThread("帅帅");//mt.run();  //对象名.方法名();  这个代码写在了主方法里,由主线程来执行mt.start();        mt1.start();        mt2.start();        mt3.start();            }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

packageThreadDemo;/**

* Java中线程实现的第二种方式:

*          实现Runnable接口

*              [1]实现Runnable接口

*              [2]重写run方法

*              [3]创建一个Thread对象

*              [4]通过Thread对象,调用Thread类中的start()方法启动线程

*

*      开发中建议使用接口的方式来实现多线程,以避免Java中类的单继承带来的局限性

*      Runnable这个接口还能共享资源

*/publicclassMyRunimplementsRunnable{@Overridepublicvoidrun() {for(inti =1;i<=5;i++){            System.out.println(Thread.currentThread().getName()+":\t第"+i+"次运行.....");        }    }publicstaticvoidmain(String[] args) {//创建对象MyRun mr =newMyRun();        Thread th =newThread(mr);//创建Thread类对象,使用Thread类中的start()方法启动线程th.start();    }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

packageThreadDemo01;/**

* 一共有5张票:(runable接口可以共享资源)

*          合理的售完

*/publicclassMyRunnableimplementsRunnable{intticket =5;@Overridepublicvoidrun() {for(inti =1;i<=15;i++){//有15个人等着买票if(ticket>0){                        System.out.println("线程"+Thread.currentThread().getName()+"卖票"+(ticket--));                    }                }        }publicstaticvoidmain(String[] args) {//创建对象MyRunnable mr =newMyRunnable();            Thread th =newThread(mr);            Thread th1 =newThread(mr);            Thread th2 =newThread(mr);            th.start();            th1.start();            th2.start();        }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

packageThreadDemo02;/**

* 线程的五种状态:

*          新生:通过new创建时

*          就绪:通过调用start方法,具备执行资格,等待分配到CPU资源

*          运行:具备执行资格同时又刚好得到了CPU资源,执行run方法中的代码

*                    直到等待某资源而阻塞或执行完任务而死亡

*          阻塞:正在执行时的线程,被执行了sleep(睡眠)方法等,停止了运行则是阻塞阶段

*          死亡(终止):线程生命周期的最后一个阶段:

*                                      1、正常执行完毕

*                                      2、线程被强制制止

*                                      3、线程抛出未捕获的异常

*/publicclassThreadDemo{publicstaticvoidmain(String[] args) {//创建对象    【新生】ThreadEntity te =newThreadEntity();            Thread t =newThread(te);              System.out.println("线程启动前:"+t.isAlive());//falset.start();//【就绪状态】System.out.println("线程启动后:"+t.isAlive());//true//优先级System.out.println("获取当前线程及名字:"+Thread.currentThread().getName());            System.out.println("获取当前线程的优先级:"+Thread.currentThread().getPriority());            System.out.println("线程的最高优先级:"+Thread.MAX_PRIORITY);            System.out.println("线程的最低优先级:"+Thread.MIN_PRIORITY);            System.out.println("线程的默认优先级:"+Thread.NORM_PRIORITY);//设置优先级t.setPriority(3);            System.out.println(t.getPriority());        }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

packageThreadDemo02;/**

*/publicclassThreadEntityimplementsRunnable{@Overridepublicvoidrun() {for(inti =1;i<=5;i++){        System.out.println(Thread.currentThread().getName()+":\t"+i);    }    }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

相关文章

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

网友评论

    本文标题:java多线程

    本文链接:https://www.haomeiwen.com/subject/ymnznxtx.html