Java学习之多线程(定义)
进程:正在运行中的程序
线程:负责执行程序的控制单元(执行路径)
一个进程中可以有多个执行路径,称之为多线程
一个进程中至少要有一个线程
创建新执行线程有两种方式
一、继承Thread类
步骤:
1、定义一个类继承Thread类
2、覆盖Thread类中的run方法(run方法中就是线程要执行的任务代码)
3、创建Thread子类对象
4、调用start方法开启线程,执行run方法
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name;
} void run()
{
for(x=0;x<9;x++)
{
System.out.println(name+"----"+x+"当前执行run方法的线程名称"+Thread.currentThread().getName());
}
}
} class ThreadDemo
{
public static void main(String[] args)
{
Demo d1=new Demo("zhangsan"); Demo d2=new Demo("lisi");
d1.start();
d2.start(); System.out.println("当前执行run方法的线程名称"+Thread.currentThread().getName());
}
}
问题:这个Demo类必须继承Thread类,那如果Demo 有父级(class Demo extends Parent)的话,是不是就无法再继承类,那么就想能不能实现接口
二、实现Runnable接口(开发中较为常用)
步骤:
1、定义一个类实现Runnable接口
2、重写接口中的run方法(run方法中就是线程要执行的任务代码)
3、通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数参数进行传递
4、调用线程对象的start方法开启线程,执行run方法
class Demo implements Runnable
{
private String name;
Demo(String name)
{
this.name = name;
} public void run()
{
for(x=0;x<9;x++)
{
System.out.println(name+"----"+x+"当前执行run方法的线程名称"+Thread.currentThread().getName());
}
}
} class ThreadDemo
{
public static void main(String[] args)
{
new Thread(new Demo("wangwu")).start();
new Thread(new Demo("zhaoliu")).start();
System.out.println("当前执行run方法的线程名称"+Thread.currentThread().getName());
}
}
Thread.currentThread();获取当前运行线程
Thread.currentThread().getName();方法获取线程名称
Java学习之多线程(定义)的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- 2019/3/7 Java学习之多线程(基础)
Java学习之多线程 讲到线程,就必须要懂得进程,进程是相当于一个程序的开始到结束,而线程是依赖于进程的,没有进程,就没有线程.线程也分主线程和子线程,当在主线程开启子线程时,主线程结束,而子线程还可 ...
- java学习笔记 --- 多线程(多线程的创建方式)
1.创建多线程方式1——继承Thread类. 步骤: A:自定义类MyThread继承Thread类. B:MyThread类里面重写run()? 为什么是run()方法呢? C:创建对象 D:启 ...
- Java学习之多线程详解
一.多线程的实现 1.继承Thread类 a.子类继承Thread类具备多线程能力 b.启动线程:子类对象.start() c.不建议使用:避免OOP单继承局限性 package com. ...
- java学习之多线程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程(Lightweight Process,LWP)是程序中一个单一 ...
- JAVA学习总结-多线程基础:
参考书籍:疯狂JAVA讲义 1.进程和线程; 进程是处于运行过程中的程序;并且具有一定的独立功能;进程是系统进行系统资源分配和调度的一个独立单位. 一般而言,进程包括以下三个特征: 独立性:进程是系统 ...
- 0040 Java学习笔记-多线程-线程run()方法中的异常
run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
随机推荐
- 爬虫(十一)—— 请求库(三)pypeteer请求库
曾经使用模拟浏览器操作(selenium + webdriver)来写爬虫,但是稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以 ...
- Python模块之pdfkit
1.安装依赖 pip install python-docx #Python下的Microsoft Word 2007工具 pip install PyPDF2 #Python下的PDF工具 pip ...
- Codeforce 1175 D. Array Splitting
新鲜热乎的题 Codeforce 1175 D. 题意:给出一个长度为$n$的序列$a$,你需要把它划分为$k$段,每一个元素都需要刚好在其中一段中.分好之后,要计算$\sum_{i=1}^{n} ( ...
- luoguP3384 [模板]树链剖分
luogu P3384 [模板]树链剖分 题目 #include<iostream> #include<cstdlib> #include<cstdio> #inc ...
- 各种设备在linux中的文件名
各种设备在linux中的文件名: 设备 设备在linux内的文件名 ide硬盘 /dev/ha[a-d] scs硬盘 /dev/sd[a-p] u盘 /dev/sd[a-p](与SAT ...
- ORACLE USER视图
select * from USER_ALL_TABLES -- 包含对用户可用的表的描述. select * from USER_ARGUMENTS --列出对用户可存取的对象中的参数 ...
- Ajax ——数据解析
Ajax应用中数据解析是非常重要的一件事情.一般服务器返回数据有三种格式:txt , xml, json 1.解析txt 当服务器返回的数据为字符串,则这种Ajax数据 ...
- JavaScript面向对象编程(2)-- 类的定义
最近这一段时间事情太多了,没有时间再继续写,幸好这两天有点小闲,先小写一下JavaScript中面向对象一中推荐的方法.本文承接上一篇JavaScript面向对象编程(1) -- 基础. 上篇说过,J ...
- Linux就该这么学07学习笔记
参考链接:https://www.linuxprobe.com/chapter-07.html RAID磁盘冗余阵列 RAID 0 RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串 ...
- django允许外部访问 项目后台不挂断运行
1关闭防火墙 1 service iptables stop 2设置django 1 2 3 4 5 6 7 8 9 10 11 开开启django时,使用0.0.0.0:xxxx,作为ip和端口例如 ...