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()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
随机推荐
- Linux libOpenThreads库链接冲突错误
最近在linux 上安装了3.7.0版本的OpenSceneGraph,而在安装之前没有完全卸载之前安装的3.6.3版本,导致在编译程序链接时出现库引用冲突,在便以后出现以下警告信息: /usr/bi ...
- python学习二十一天文件可读,可写,可执行的操作
文件无非是可读,可写,可执行的操作,分别对应的模式 r ,w,x,只读模式,只写模式,只执行模式,a模式为追加模式,实际也是写操作模式,r+,w+,a+ 可读写模式,下面详细说模式的用法 1,文件的模 ...
- html-mailto
MailTo 属性 mailto 属性可以设置到a 标签和form 标签中 例如: <a href="mailto:****@qq.com">send mail< ...
- 70.Trapping Rain Water(容水量)
Level: Hard 题目描述: Given n non-negative integers representing an elevation map where the width of e ...
- ASP.NET MVC5 +Abp 模板(Startup Templates)
官网:https://aspnetboilerplate.com/Templates 系统登陆初始账号:admin 密码:123qwe 调试错误: 1.在多语句事务内不允许使用 CREATE DATA ...
- 常见前端面试题JS部分
1.闭包 2.JS操作和获取cookie //创建cookie function setCookie(name, value, expires, path, domain, secure) { var ...
- vue,一路走来(15)--简单投票系统
今天记录一下简单的投票系统,主要实现选中至少五张作品,并提交投票. 思路:选中作品,将作品id存入到数组里. 取消投票,则从数组中移除该作品id. 如图效果: <li v-for="( ...
- java通过反射拿到mybatis中的sql语句并操作
private static final int MaxBatchLength = 100; public void updateBatch(List<T>list, BaseMapper ...
- redis JedisConnectionException: Could not get a resource from the pool
转载:https://blog.csdn.net/testcs_dn/article/details/43052585 产生此错误的原因通常是: 一.Redis没有启动: 我自己遇到一次这样的问题.汗 ...
- Java JDK1.8新特性之四大函数式接口
JDK 1.8的一些新特性 四大核心函数式接口(Consumer.Predicate.Supplier.Function),结合lambda表达式 import java.util.ArrayList ...