Java多线程-Java多线程实现

1,继承Thread类

2,实现Runnable接口

3,多线程实现数据共享

1,继承Thread类

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
package  com.java1234.chap09.sec02;
public  class  Thread1  extends  Thread{
     private  int  baoZi= 1 ;
     
     private  String threadName;
     public  Thread1(String threadName) {
         super ();
         this .threadName = threadName;
     }
     @Override
     public  void  run() {
         while (baoZi<= 10 ){
             System.out.println(threadName+ " 吃" +baoZi+ "第个包子" );
             baoZi++;
         }
     }
     
     public  static  void  main(String[] args) {
         // 张三 李四一起吃包子 每人吃10个
         Thread1 t1= new  Thread1( "张三线程" );
         Thread1 t2= new  Thread1( "李四线程" );
         t1.start();
         t2.start();
     }
     
     
     
}

运行输出:

张三线程 吃1第个包子

张三线程 吃2第个包子

张三线程 吃3第个包子

张三线程 吃4第个包子

张三线程 吃5第个包子

张三线程 吃6第个包子

张三线程 吃7第个包子

张三线程 吃8第个包子

张三线程 吃9第个包子

张三线程 吃10第个包子

李四线程 吃1第个包子

李四线程 吃2第个包子

李四线程 吃3第个包子

李四线程 吃4第个包子

李四线程 吃5第个包子

李四线程 吃6第个包子

李四线程 吃7第个包子

李四线程 吃8第个包子

李四线程 吃9第个包子

李四线程 吃10第个包子

2,实现Runnable接口

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
package  com.java1234.chap09.sec02;
public  class  Thread2  implements  Runnable{
     private  int  baoZi= 1 ;
     
     private  String threadName;
     public  Thread2(String threadName) {
         super ();
         this .threadName = threadName;
     }
     @Override
     public  void  run() {
         while (baoZi<= 10 ){
             System.out.println(threadName+ " 吃" +baoZi+ "第个包子" );
             baoZi++;
         }
     }
     
     public  static  void  main(String[] args) {
         // 张三 李四一起吃包子 每人吃10个
         Thread2 t1= new  Thread2( "张三线程" );
         Thread2 t2= new  Thread2( "李四线程" );
         Thread t11= new  Thread(t1);
         Thread t12= new  Thread(t2);
         t11.start();
         t12.start();
     }
}

运行输出:

张三线程 吃1第个包子

张三线程 吃2第个包子

李四线程 吃1第个包子

张三线程 吃3第个包子

李四线程 吃2第个包子

李四线程 吃3第个包子

李四线程 吃4第个包子

李四线程 吃5第个包子

李四线程 吃6第个包子

李四线程 吃7第个包子

李四线程 吃8第个包子

张三线程 吃4第个包子

李四线程 吃9第个包子

李四线程 吃10第个包子

张三线程 吃5第个包子

张三线程 吃6第个包子

张三线程 吃7第个包子

张三线程 吃8第个包子

张三线程 吃9第个包子

张三线程 吃10第个包子

3,多线程实现数据共享

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
package  com.java1234.chap09.sec02;
public  class  Thread3  implements  Runnable{
     private  int  baoZi= 1 ;
     
     private  String threadName;
     public  Thread3(String threadName) {
         super ();
         this .threadName = threadName;
     }
     @Override
     public  synchronized  void  run() {
         while (baoZi<= 10 ){
             System.out.println(threadName+ " 吃" +baoZi+ "第个包子" );
             baoZi++;
         }
     }
     
     public  static  void  main(String[] args) {
         Thread3 t1= new  Thread3( "超级张三线程" );
         Thread t11= new  Thread(t1);
         Thread t12= new  Thread(t1);
         Thread t13= new  Thread(t1);
         t11.start();
         t12.start();
         t13.start();
     }
}

运行输出:

超级张三线程 吃1第个包子

超级张三线程 吃2第个包子

超级张三线程 吃3第个包子

超级张三线程 吃4第个包子

超级张三线程 吃5第个包子

超级张三线程 吃6第个包子

超级张三线程 吃7第个包子

超级张三线程 吃8第个包子

超级张三线程 吃9第个包子

超级张三线程 吃10第个包子

这里我们定义一个实例 然后用这个实例来是实例化三个Thread对象,run方法我们要加synchronized锁,否则会出现多个线程同时进入方法的情况,导致多个线程吃同一个包子;

Java多线程-Java多线程实现相关推荐

  1. JAVA并发之多线程基础(2)

    除了我们经常用的synchronized关键字(结合Object的wait()和notify()使用)之外,还有对应的上篇文章讲到的方法JAVA并发之多线程基础(1)之外,我们日常中使用到最多的也就是 ...

  2. Java基础、多线程、JVM、集合八股文自述(持续更新)

    Java基础.多线程.JVM.集合八股文自述 一.Java基础 1.1 object类有哪些方法? getClass().hashCode().equals().clone().toString(). ...

  3. Java中的多线程编程(超详细总结)

    文章目录 Java中的多线程编程(超详细总结) 一.线程与多线程的概念 二.线程与进程之间的关系 三.一个线程的生命周期 四.多线程的目的和意义 五.线程的实现的方式 Java中的多线程编程(超详细总 ...

  4. Java回顾之多线程

    在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信,我们把线程同步的话题留到下一篇文章中. 线程是操作系统运 ...

  5. Java基础之多线程详细分析

    在了解多线程之前,先来了解一下进程与线程之间的关系. 进程和线程: 进程是指在系统中正在执行的一个程序,每个进程之间是独立的. 线程是进程的一个基本执行单元.一个进程要想执行任务,必须得有线程(每1个 ...

  6. java.text.SimpleDateFormat多线程下的问题

    1. 今天在做性能压测的时候发现java.text.SimpleDateFormat多线程下的错误 2. 先贴出两段错误大家看一下: Exception in thread "pool-1- ...

  7. 多线程面试题_线程,代码和数据–多线程Java程序实际运行的方式

    多线程面试题 有些事情是您在学术或培训班上没有学到的,经过几年的工作经验后才逐渐了解,然后您才意识到,这是我最想念的那几年,这是非常基本的. 了解多线程Java程序的执行方式就是其中之一. 您肯定已经 ...

  8. java面试题 多线程_Java面试常见关于多线程的面试题

    多线程是Java技术中常用而且相对比较难易理解的一个知识点.而且多线程也是企业实际应用中必备的技术,因此在面试的过程中,面试者经常被问到关于多线程的问题,遇到这些问题大家应该怎么办呢?赶紧恶补一下Ja ...

  9. JAVA并发之多线程基础(5)

    上面介绍了并发编程中的栅栏等JAVA并发之多线程基础(4) .通过唯一的一个终点线来帮助确定线程是多晚开始执行下一次操作. LockSupport 提供了一个比较底层的线程挂起操作.有点类似于susp ...

  10. JAVA中的多线程(一)

    JAVA中的多线程(一) 进程:是一个正在执行中的程序 每一个进程执行都有一个执行的顺序,该顺序是一个执行路径,或者叫控制单元 线程:就是进程中的一个独立的控制单元 线程在控制着进程的执行 一个进程中 ...

最新文章

  1. [原创]辽宁移动通信-话费余额查询
  2. C++虚继承和虚基类详解(一)
  3. 总体经济拉动新引擎-农业大健康·张咏:疫情后谋定乡村振兴
  4. 吴恩达深度学习笔记9-Course3-Week2【机器学习策略(ML Strategy)2】
  5. Red5 简单安装指南
  6. dataGridView使用指南系列一、回车换行或换列完美解决方案
  7. Android studio 报错AAPT2 error
  8. Service OS maintain ( Reference Object )
  9. Docker Storm开发环境搭建
  10. ASP.NET Core依赖注入解读amp;使用Autofac替代实现
  11. 在系统中用etcd实现服务注册和发现
  12. Less(v3.9.0)使用详解—变量
  13. python画折线图-利用python画出折线图
  14. 如何把 Google adsense 的广告放到博客的Banner位置
  15. dBm 转 W 换算
  16. 前端7大常用布局方式
  17. 解决idea工具下tomcat中文乱码问题
  18. 什么是受限股票(RSU)、二级市场、蓝筹股
  19. 把ip导入mysql_纯真IP数据库导入mysql
  20. 两种方法去除页眉页脚:基于OCR识别后的文本/基于图片切割

热门文章

  1. 如何在微信读书上阅读极客时间专栏?
  2. (9)javaEE---equest与response
  3. paramiko的安装
  4. JFS及JFS2文件系统
  5. Latex排版[5]: 公式下多行下标
  6. Matlab打开绘图工具
  7. java.util. 什么意思_java.util中,util是什么意义
  8. 深入理解散列函数和散列表
  9. Python基本编程题
  10. 3.8 使用切片工具制作网页 [Ps教程]