二、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 ...
随机推荐
- WordPress教程之如何入门WordPress
这篇文章将介绍如何设置 WordPress,并自定义其基本功能.WordPress 的安装包相对较小(低于 10 MB),非常易于安装和管理.为了托管自己的网站,你可以获得几个不同的选项. 你可以通过 ...
- Bzoj 2058: [Usaco2010 Nov]Cow Photographs 题解
2058: [Usaco2010 Nov]Cow Photographs Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 190 Solved: 104[ ...
- 20141111-WCF获得Web路径
在WCF中调用Server.MapPath 获取服务发布目录路径 在WCF中调用Server.MapPath 获取服务发布目录路径 在WCF中想使用Server.Map获取当前服务发布目录的绝对路径. ...
- 嵌入式Linux开发环境搭建,问题ping、nfs的解决
一. 嵌入式软件层次 1) Bootloader->引导加载程序 整个嵌入式系统的加载启动任务完全交给Bootloader完成,它的主要任务是将内核映象从硬盘读到RAM中,然后跳转到内核入口启动 ...
- RabbitMQ(一):RabbitMQ快速入门
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章. RabbitMQ ...
- Spring_AOP基于AspectJ的注解开发&JDBC的模板使用&事务管理(学习笔记3)
一:AOP基于AspectJ的注解开发 1,简单的实例: 1)引入相应的jar包 2)在配置文件里引入相关约束 <beans xmlns="http://www.springfra ...
- TCP端口复用引发的异常,用setsockopt来解决
TCP端口复用引发的异常,用setsockopt来解决 我们在并发连接一个服务端时候他会出现这种情况 OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允 ...
- u盘制作启动盘步骤以及安装win10步骤
1.下载制作工具:微PE工具箱V2.0 http://www.wepe.com.cn/download.html 2.默认制作启动盘 3.下载win10镜像 ed2k://|file|cn_windo ...
- 一文了解有趣的位运算(&、|、^、~、>>、<<)
1.位运算概述 从现代计算机中所有的数据二进制的形式存储在设备中.即0.1两种状态,计算机对二进制数据进行的运算(+.-.*./)都是叫位运算,即将符号位共同参与运算的运算. 口说无凭,举一个简单的例 ...
- javascript基础学习第三天
☞ 命名法: 小驼峰命名法 和 大驼峰命名法(帕斯卡命名法) 变量命名规则:遵循小驼峰命名法 [变量名第一个字母小写后面每一个单词的首字母大写] var userNameAge; 函数命名规则:遵循帕 ...