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()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
随机推荐
- httpclient模拟服务器请求
// 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httppost Ht ...
- eclipse新建maven项目出错 pom.xml报错
问题: 1.新建项目后会提示一个这样的错 maven-compiler-plugin:3.1:compile(1 errors) maven-compiler-plugin:3.1:testCompi ...
- BZOJ 4675(点分治)
题面 传送门 分析 由于期望的线性性,我们可以分别计算每个点对对答案的贡献 有三个人取数字,分开对每个人考虑 设每个人分别取了k个数,则一共有\(C_n^k\)种组合,选到每种组合的概率为\(\fra ...
- Ubuntu login as root automatically
vim /etc/lightdm/lightdm.conf Finally, edit the file as shown below and save it. autologin-user=< ...
- centos7 nginx完整支持thinkphp pathinfo模式开启方法
thinkphp运行在linux+nginx,如何开启pathinfo模式,我是完整测试过了,没问题的,在thinkphp配置文件 开启 'URL_MODEL' => 1, 1代 ...
- 【学习总结】尚硅谷2019java数据结构和算法
相关链接 github:javaDSA 目录 第一章 内容介绍和授课方式 第二章 数据结构和算法概述 第三章 稀疏数组和队列 第四章 链表 第五章 栈 第六章 递归 第七章 排序算法 第八章 查找算法 ...
- Django 使用简单笔记
1. Django项目的启动: 1. 命令行启动 在项目的根目录下(也就是有manage.py的那个目录),运行: python3 manage.py runserver IP:端口--> 在指 ...
- Class.forName的作用
在java语言中,任何类只有被装载到JVM上才能运行.Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带有给定字符串明的类或者接口相关联的Class对象,并且JVM会加载 ...
- Sass--混合宏的不足
混合宏在实际编码中给我们带来很多方便之处,特别是对于复用重复代码块.但其最大的不足之处是会生成冗余的代码块.比如在不同的地方调用一个相同的混合宏时.如: @mixin border-radius{ - ...
- java 接口概念及使用
package java11; /* 在任何版本的java中,接口都能定义抽象方法 格式: public abstrace 返回值类型 方法名称(参数列表): 注意事项: 1.接口当中的抽象方法,修饰 ...