一、同步?异步?

下面两幅图解释了同步异步。

二、实现多线程的方式

1.继承Thread

package threaddemo;

class CreateThreadDemo extends  Thread{

    /**
* 线程执行的任务,执行的代码
*/
@Override
public void run() {
for (int i = 0; i <30 ; i++) {
System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
} }
}
/**
* @version V1.0
* @description:实现线程的方式
* @author: BingShu
* @contact: wx:hsj179540
* @date: 2019年-08月-11日-23
*/
public class ThreadDemo {
/**
* 什么是进程?什么是线程?
* 多线程的应用场景?
* 多线程的优点?
* java实现多线程的方式?
* 1.集成Thread类重写run方法
*/
public static void main(String[] args) {
CreateThreadDemo createThreadDemo=new CreateThreadDemo();
createThreadDemo.start();
for (int i = 0; i <30 ; i++) {
System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
}
}
}

2.实现runable接口(推荐)

package threaddemo;

class CreateThreadDemo2 implements Runnable {

    /**
* 执行线程代码
*/
@Override
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println("我是线程:" + i + "名字:" + Thread.currentThread().getName());
} }
} /**
* @version V1.0
* @description:
* @author: BingShu
* @contact: wx:hsj179540
* @date: 2019年-08月-11日-23
*/
public class ThreadDemo2 {
public static void main(String[] args) {
CreateThreadDemo2 createThreadDemo2=new CreateThreadDemo2();
new Thread(createThreadDemo2).start();
for (int i = 0; i <30 ; i++) {
System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
}
}
}

3.使用内部类实现

package threaddemo;

/**
* @version V1.0
* @description:使用内部类实现
* @author: BingShu
* @contact: wx:hsj179540
* @date: 2019年-08月-11日-23
*/
public class ThreadDemo3 {
public static void main(String[] args) {
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i <30 ; i++) {
System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
}
}
});
thread.start();
for (int i = 0; i <30 ; i++) {
System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
}
}
}

三、内部类的使用(补充)

package threaddemo;

abstract class Panret {
//内部类
abstract void add();
} /**
* @version V1.0
* @description:内部类的使用
* @author: BingShu
* @contact: wx:hsj179540
* @date: 2019年-08月-11日-23
*/
public class InternalClass {
public static void main(String[] args) {
Panret p = new Panret() {
@Override
void add() {
System.out.println("我是内部类");
}
};
//方法调用
p.add();
}
}

四、常用api的使用

package threaddemo;

/**
* 常用api
* getId() 获取线程Id
* getName(); // 获取线程名字
* stop(); //停止
* Thread.sleep(long value); 休眠
*/
class CreateThreadApiUse implements Runnable { @Override
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println("线程id:" + Thread.currentThread().getId() + " 线程Name:" + Thread.currentThread().getName());
if(i==5){
//不安全不建议大家使用
Thread.currentThread().stop();
}
}
}
} /**
* @version V1.0
* @description:
* @author: BingShu
* @contact: wx:hsj179540
* @date: 2019年-08月-11日-23
*/
public class ThreadApi {
public static void main(String[] args) {
CreateThreadApiUse createThreadApiUse = new CreateThreadApiUse(); //自定义线程名字
Thread thread = new Thread(createThreadApiUse,"我是线程的名字");
thread.start();
try {
//休眠
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("线程异常");
}
}
}

总结:

1.同步异步?

2.多线程常用的实现方式?(实现Runable方式推荐,原因:java面向接口编程,实现接口可以多继承,但是直接继承Thread将无法继承        其他的类。)

还有其他方式实现多线程?请自行科普。

3.内部类的使用?

4.Thread常用api

有问题欢迎咨询,或者加入我的群:微信 :hsj179540

二、java实现多线程的方式?的更多相关文章

  1. Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式

    Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...

  2. JAVA\Android 多线程实现方式及并发与同步

    转载:https://blog.csdn.net/csdn_aiyang/article/details/65442540 概述     说到线程,就不得不先说线程和进程的关系,这里先简单解释一下,进 ...

  3. 详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  4. Java之多线程创建方式

    多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: ...

  5. Java多线程引例及实现多线程的方式

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术. Java多线程是由JVM来实现,不必关心操作系统的调用问题. 假如我们要实现如下功能: public c ...

  6. Java基础加强之并发(二)常用的多线程实现方式

    概述 常用的多线程实现方式有2种: 1. 继承Thread类 2. 实现Runnable接口 之所以说是常用的,是因为通过还可以通过JUC(java.util.concurrent)包中的线程池来实现 ...

  7. Java之多线程方式二(实现Runnable接口)

    /** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对象 ...

  8. java多线程实现方式

    一.什么是线程? 线程:程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位. 多线程:单个程序中同时运行多个线程完成不同的工作,称为多线程. 特 ...

  9. java中创建多线程的方式

    在java中比较常用的有三种创建多线程的方式. 方式一:继承Thread类,要重写run方法. 在MyThread类 public class MyThread extends Thread { @O ...

随机推荐

  1. HDU 3062:Party(2-SAT入门)

    http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文. 思路:裸的2-SAT.判断二元组的两个人是否在同一个强连通分量. 学习地址:http://w ...

  2. MySQL sys Schema 简单介绍-2

    之前在<MySQL sys Schema 简单介绍-1>中简单的介绍了,sys Schema库中的表.那么这些表都可以查询些什么信息呢?接下来本文将做下介绍. 1. 表的情况 1.1 统计 ...

  3. 嵊州D1T3 睡美人航班

    嵊州D1T3 睡美人航班 不知不觉中,我对她的爱意已经达到了 n. 是这样子的,第 1 分钟,我对她的爱意值是 (1, 1). 假如当第 x 分钟时我对她的爱意值是 (a, b),那么第 x + 1 ...

  4. java学习笔记(基础篇)—数组模拟实现栈

    栈的概念 先进后出策略(LIFO) 是一种基本数据结构 栈的分类有两种:1.静态栈(数组实现) 2.动态栈(链表实现) 栈的模型图如下: 需求分析 在编写代码之前,我习惯先对要实现的程序进行需求分析, ...

  5. 一文带你了解git

    git简介 什么是git? git是当今世界上最先进的分布式的版本控制系统. 版本控制系统分集中式的和分布式的,集中式的主要代表有CVS.SVN,而Git是分布式版本控制系统的佼佼者. 那什么是集中式 ...

  6. 个人永久性免费-Excel催化剂功能第25波-小白适用的文本处理功能

    翻看各大插件,都不约而同地出现系列文本处理的功能,自己在使用Excel过程中,在临时性的需求时,也会用上这几种文本处理,但仅适用于小范围的使用,使用这些功能不是数据处理的正确的之道,数据处理的核心需求 ...

  7. 高德网络定位之“移动WiFi识别”

    导读随着时代的发展,近10年来位置产业蓬勃发展,定位能力逐渐从低精度走向高精度,从部分场景走向泛在定位.设备和场景的丰富,使得定位技术和能力也不断的优化更新.定位能力包括GNSS.DR(航迹推算).M ...

  8. Storm 实时读取本地文件操作(模拟分析网络日志)

    WebLogProduct 产生日志类 package top.wintp.weblog; import java.io.FileNotFoundException; import java.io.F ...

  9. 使用nvm管理多个不同版本的nodeJS之安装成功nodeJs之后使用npm报错的问题

    使用nvm安装nodeJS之后,node -v命令可以正常使用,但是npm命令一直报“npm不是内部命令”的错误,深入研究之后得到以下解决方案: 搭建步骤: (1)下载nvm   https://gi ...

  10. 【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)

    目录 一. 模型的制作 1.1 生成字体模型 1.2 多表面贴图 二. 镜头及动画 三. 大作业总结 示例代码托管在:http://www.github.com/dashnowords/blogs 博 ...