一、同步?异步?

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

二、实现多线程的方式

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. 微信小程序 CSS border-radius元素 overflow:hidden失效问题 iPhone ios 苹果兼容问题 伪类元素

    同事找我解决一个问题 说安卓圆角没问题 苹果上失效了 我一看 其实就是没做兼容上图给你们看看 有没有看出来 其实就是父级设置圆角属性失效 父元素使用border-radius和overflow:hid ...

  2. Elasticsearch(三) 插件安装

    1.head插件 命令:  ./bin/plugin install mobz/elasticsearch-head

  3. 剑指offer第二版-1.赋值运算符函数

    面试题1:赋值运算符函数题目要求:为自定义类添加赋值运算符函数,考察一些细节点的书写.

  4. Java编程思想:为什么要使用内部类

    public class Test { public static void main(String[] args) { Callbacks.test(); } } /* 为什么需要内部类: 1.可以 ...

  5. python3.5学习笔记(第六章)

    本章内容: 正则表达式详解(re模块) 1.不使用正则表达式来查找文本的内容 要求从一个字符串中查找电话号码,并判断是否匹配制定的模式,如:555-555-5555.传统的查找方法如下: def is ...

  6. Android调试移动端webview

    尝试了各种Mac版本的安卓模拟器,包括Android Studio.Genymotion以及国内的网易MuMu.夜神.蓝叠.腾讯手游助手,做的最好的是Android Studio,最难上手的也是And ...

  7. VUE v-for循环中每个item节点动态绑定不同函数方法

    一. 业务场景: 一个title 处 可能有 一个或多个按钮,  按钮对应不同的响应事件 二. 思路 : 按钮个数 根据传入的数据length 来循环渲染,  每条数据对应的事件名称 通过动态绑定 三 ...

  8. python -服务器与客户端断电续传程序详细介绍

    6.28自我总结 客户端与服务器之间文件传输断电续传 `通过判断文件大小,以及文件在读取中的指针位置的调整来解决断电续传问题' 1.程序目录 E:/断电续传 |___bil | |___common. ...

  9. c语言进阶6-指针

    指针是c语言的一个重要组成部分 是c语言的核心.精髓所在,用好指针可以在c语言编程中起到事半功倍的效果.一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配:另一方面,使用指针可使程序更灵活 ...

  10. 一位 iOS 大牛的 BAT面试心得与经验总结,送给正在迷茫 的你!

    前言: 目前形势,参加到 iOS 队伍的人是越来越多,可以说是已经达到了供过于求的地步了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了, ...