关键词:
在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.... 查看详情