二、java实现多线程的方式?
一、同步?异步?
下面两幅图解释了同步异步。


二、实现多线程的方式
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实现多线程的方式?的更多相关文章
- Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式
Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...
- JAVA\Android 多线程实现方式及并发与同步
转载:https://blog.csdn.net/csdn_aiyang/article/details/65442540 概述 说到线程,就不得不先说线程和进程的关系,这里先简单解释一下,进 ...
- 详解三种java实现多线程的方式
java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Java之多线程创建方式
多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: ...
- Java多线程引例及实现多线程的方式
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术. Java多线程是由JVM来实现,不必关心操作系统的调用问题. 假如我们要实现如下功能: public c ...
- Java基础加强之并发(二)常用的多线程实现方式
概述 常用的多线程实现方式有2种: 1. 继承Thread类 2. 实现Runnable接口 之所以说是常用的,是因为通过还可以通过JUC(java.util.concurrent)包中的线程池来实现 ...
- Java之多线程方式二(实现Runnable接口)
/** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对象 ...
- java多线程实现方式
一.什么是线程? 线程:程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位. 多线程:单个程序中同时运行多个线程完成不同的工作,称为多线程. 特 ...
- java中创建多线程的方式
在java中比较常用的有三种创建多线程的方式. 方式一:继承Thread类,要重写run方法. 在MyThread类 public class MyThread extends Thread { @O ...
随机推荐
- 微信小程序 CSS border-radius元素 overflow:hidden失效问题 iPhone ios 苹果兼容问题 伪类元素
同事找我解决一个问题 说安卓圆角没问题 苹果上失效了 我一看 其实就是没做兼容上图给你们看看 有没有看出来 其实就是父级设置圆角属性失效 父元素使用border-radius和overflow:hid ...
- Elasticsearch(三) 插件安装
1.head插件 命令: ./bin/plugin install mobz/elasticsearch-head
- 剑指offer第二版-1.赋值运算符函数
面试题1:赋值运算符函数题目要求:为自定义类添加赋值运算符函数,考察一些细节点的书写.
- Java编程思想:为什么要使用内部类
public class Test { public static void main(String[] args) { Callbacks.test(); } } /* 为什么需要内部类: 1.可以 ...
- python3.5学习笔记(第六章)
本章内容: 正则表达式详解(re模块) 1.不使用正则表达式来查找文本的内容 要求从一个字符串中查找电话号码,并判断是否匹配制定的模式,如:555-555-5555.传统的查找方法如下: def is ...
- Android调试移动端webview
尝试了各种Mac版本的安卓模拟器,包括Android Studio.Genymotion以及国内的网易MuMu.夜神.蓝叠.腾讯手游助手,做的最好的是Android Studio,最难上手的也是And ...
- VUE v-for循环中每个item节点动态绑定不同函数方法
一. 业务场景: 一个title 处 可能有 一个或多个按钮, 按钮对应不同的响应事件 二. 思路 : 按钮个数 根据传入的数据length 来循环渲染, 每条数据对应的事件名称 通过动态绑定 三 ...
- python -服务器与客户端断电续传程序详细介绍
6.28自我总结 客户端与服务器之间文件传输断电续传 `通过判断文件大小,以及文件在读取中的指针位置的调整来解决断电续传问题' 1.程序目录 E:/断电续传 |___bil | |___common. ...
- c语言进阶6-指针
指针是c语言的一个重要组成部分 是c语言的核心.精髓所在,用好指针可以在c语言编程中起到事半功倍的效果.一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配:另一方面,使用指针可使程序更灵活 ...
- 一位 iOS 大牛的 BAT面试心得与经验总结,送给正在迷茫 的你!
前言: 目前形势,参加到 iOS 队伍的人是越来越多,可以说是已经达到了供过于求的地步了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了, ...