一、同步?异步?

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

二、实现多线程的方式

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. html select 可输入 可编辑

    <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> ...

  2. Java项目案例之--封装的实例

    Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...

  3. JAVA面试题 浅析Java中的static关键字

    面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 s ...

  4. [MySQL]快速解决"Table '.\sjzlf\zbp_post' is marked as crashed and should be repaired"故障

    为了不冒失修复,故采取保守做法,我们知道 MySQL 一个高效的管理工具便是 PhpMyAdmin,而在该管理软件中就包含了对表的检查.分析.修复.优化功能,比起网上提供的含糊命令行来说更安全更简便. ...

  5. HBase学习笔记一

    HBase简介 HBase概念 HBase的原型是谷歌的Bigtable论文 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC上搭建起大规模结构化存储集 ...

  6. ESXI好好研究

    之前几周在公司要搭建一个平台,因为服务器不够用,所以需要要一台服务器上装虚拟机.有人说用ESXI装虚拟机,并且不用装操作系统,我当时还纳闷儿了,不装操作系统,直接装虚机?这里我有点孤陋寡闻了,其实ES ...

  7. 【题解】【P3383 【模板】线性筛素数】

    看完这篇博客你就懂了 原题链接 代码: #include<bits/stdc++.h> using namespace std; bool isPrime(int num) { if(nu ...

  8. Yarn工作机制

    概述 (0)Mr 程序提交到客户端所在的节点. (1)Yarnrunner 向 Resourcemanager 申请一个 Application. (2)rm将该应用程序的资源路径和Applicati ...

  9. pyqt QT设计师制作关于对话框(软件版权申明)

    一.实验环境 1.anaconda2 2.5.0 + python2.7 2.pyinstaller3.0 二.操作步骤 2.1 启动designer.exe 2.2 单击“文件” -> “新建 ...

  10. TensorFlow(1)-基础知识点总结

    1. tensorflow简介 Tensorflow 是 google 开源的机器学习工具,在2015年11月其实现正式开源,开源协议Apache 2.0. Tensorflow采用数据流图(data ...