11.2-全栈java笔记:java中如何实现多线程

     2022-03-19     141

关键词:

JAVA中使用多线程非常简单,我们先学习如何创建和使用线程,然后结合案例再深入剖析线程的特性。

通过继承Thread类实现多线程

继承Thread类实现多线程的步骤:

1. Java中负责线程的这个功能的是java.lang.Thread 这个类

2. 可以通过创建 Thread 的实例来创建新的线程。

3.  每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。

4.   通过调用Thead类的start()方法来启动一个线程。

【示例1】继承Thread类实现多线程

public class   TestThread extends   Thread {

    public void   run() {

       for(int   i=0;i<100;i++){

           System.out.println(this.getName()+":"+i);

       }

    }

 

    public static void   main(String[] args) {

       TestThread thread1 = new   TestThread();

       thread1.start();

       TestThread thread2 = new   TestThread();

       thread2.start();

    }

}

示例1 运行效果图

这种方式的缺点:那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类),则无法再继承 Thread 类。

通过Runnable接口实现多线程

在开发中,我们更多的是通过Runnable接口实现多线程。这种方式的优点是:

可以同时实现继承。实现Runnable接口方式要通用一些。

【示例2】通过Runnable接口实现多线程

public class   TestThread2 implements   Runnable {

   

    public void   run() {

       for(int   i=0;i<100;i++){

           System.out.println(Thread.currentThread().getName()+":"+i);

       }

    }

   

    public static void   main(String[] args) {

       Thread thread1 = new   Thread(new TestThread2());

       thread1.start();

       Thread thread2 = new   Thread(new TestThread2());

       thread2.start();

    }

}

执行结果与通过Thread创建线程,类似。




「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


 笔记包含从浅入深的六大部分:

 A-Java入门阶段

 B-数据库从入门到精通

 C-手刃移动前端和Web前端

 D-J2EE从了解到实战

 E-Java高级框架精解

 F-Linux和Hadoop 




本文出自 “12931675” 博客,请务必保留此出处http://12941675.blog.51cto.com/12931675/1944634

11.7-全栈java笔记:如何实现线程同步

由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问时的冲突问题。 由于我们可... 查看详情

9.4-全栈java笔记:map接口和实现类

现实生活中,我们经常需要成对存储某些信息。比如,我们使用的微信,一个手机号只能对应一个微信账户。这就是一种成对存储的关系。Map就是用来存储“键(key)-值(value) 对”。 Map类中存储的“键值对”通过键来标识... 查看详情

4.8-全栈java笔记:包机制

包机制是java中管理类的重要手段。 开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于,文件夹对于文件的作用。package我们通过package实现对类的... 查看详情

12.6-全栈java笔记:java网络编程

上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活。本节课我们讲解如何在服务器和客户端之间实现聊天室~需要思考的问题:服务器端:一个线程专门发送消息,一个线程专门接收消息... 查看详情

4.1-全栈java笔记:对象的进化史

面向对象和面向过程的区别面向过程编程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如,如何开车?我们很容易就列... 查看详情

5.5-全栈java笔记:接口的定义和使用

接口interface接口的作用为什么需要接口?接口和抽象类的区别?接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。抽象类还提供某些具体实现,接口... 查看详情

15.2-全栈java笔记:actionevent事件类型可以实现哪些功能?

ActionEvent事件ActionEvent可能是使用得最多的事件类型,其对应的监听器是ActionListener接口,该监听器接口的实现类必须重写actionPerformed方法,当事件发生时就会调用该方法。这个方法的原型是:publicvoidactionPerformed(ActionEvent e);... 查看详情

9.8-全栈java笔记:iterator(迭代器)接口

迭代器介绍所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。Iterator接口定义了如下方法:booleanhasNext(); //判断是... 查看详情

12.5-全栈java笔记:java网络编程

上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套... 查看详情

“全栈2019”java第六十一章:如何实现接口?

...开发语言Java开发环境JDKv11IntelliJIDEAv2018.3文章原文链接“全栈2019”Java第六十一章:如何实现接口?下一章“全栈2019”Java第六十二章:接口与常量详解学习小组加入同步学习小组,共同交流与进步。方式一:关注头条号Gorhaf,私... 查看详情

9.3-全栈java笔记:list接口常用实现类的特点和底层实现

上节我们讲到「List接口的特点和常用方法」,本节接着上节的内容继续深入学习。课前回顾: List接口常用的实现类有3个:ArrayList、LinkedList、Vector。那么它们的特点和底层实现有哪些呢?ArrayList特点和底层实现ArrayList底层... 查看详情

14.2-全栈java笔记:javaswing创建窗口,原来这么简单!!!

上节我们聊到GUI(GraphicalUserInterface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口。 javax.swing.JFrameJFrame在GUI中为一个窗口对象,继承于Frame。JF... 查看详情

13.7-全栈java笔记:打飞机游戏实战项目|rectangle|intersects|plane

碰撞类检测技术游戏中,碰撞是遇到最频繁的技术。当然,很多游戏引擎内部已经做了碰撞检测处理,我们只需调用即可。本节课是从碰撞的原理进行讲解,大家自己去实现基本的碰撞检测。 矩形检测原理游戏中,多个元素... 查看详情

13.3-全栈java笔记:打飞机游戏实战项目|paintthread|launchframe

多线程和内部类实现动画效果1)增加绘制窗口的线程类前三个版本,我们步步为营,每个小版本都有功能的突破。但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样“各种动、各种炫”。本节我们结合多... 查看详情

10.9-全栈java笔记:装饰器模式构建io流体系

装饰器模式装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对原有类的包装和装饰,使新的类具有更强的功能。 我这里有智能手机Iphone, 我们可以通过加装投影组件,实现原有手机功能的扩展。这就是一... 查看详情

12.7-全栈java笔记:java网络编程

UDP通讯的实现1.DatagramSocket:用于发送或接收数据包当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端... 查看详情

13.1-全栈java笔记:打飞机游戏实战项目|awt技术|mygameframe

 简介和项目目标通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用。比如:多线程用来实现动画效果、容器实现对于多发炮弹的存取和处理、常用类等等的应用。寓教于乐,让大家... 查看详情

5.6-全栈java笔记:内部类的四种实现方式

一般情况,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。内部类的作用1.内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。2.... 查看详情