java线程代码实现_Java 多线程代码实现讲解
作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程。那么如何提供给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最重要的方法是 run(),它为Thread 类的方法 start() 所调用,提供我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆盖它!
方法一:继承 Thread 类,重写方法 run(),我们在创建Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面举一个简单的例子,如下:public class TwoThread extends Thread {
public void run() {
for ( int i = 0; i
System.out.println("New thread");
}
}
public static void main(String[] args) {
TwoThread tt = new TwoThread();
tt.start();
for ( int i = 0; i
System.out.println("Main thread");
}
}
}
这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承,则无法再继承 Thread 类。
方法二:实现 Runnable 接口
Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是一个例子:public class MyThread implements Runnable {
int count=1, number;
public MyThread(int num) {
number = num;
System.out.println("创建线程 " + number);
}
public void run() {//实现了接口的run()方法
while(true) {
System.out.println("线程 " + number + ":计数 " + count);
if(++count== 6) return;
}
}
public static void main(String args[]) {
for(int i = 0; i
new Thread(new MyThread(i+1)).start();
}
}
Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装使用。
java线程代码实现_Java 多线程代码实现讲解相关推荐
- java 线程面试题_JAVA多线程面试题(一)
1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...
- java线程怎么用_Java多线程基本使用
一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...
- java线程饥饿原理_java 多线程饥饿现象的问题解决方法
java 多线程饥饿现象的问题解决方法 当有线程正在读的时候,不允许写 线程写,但是允许其他的读线程进行读.有写线程正在写的时候,其他的线程不应该读写.为了防止写线程出现饥饿现象,当线程正在读,如果写 ...
- java线程池售票_Java多线程卖票例子
以卖票的例子来介绍多线程和资源共享. 卖票是包含一系列动作的过程,有各种操作,例如查询票.收钱.数钱.出票等,其中有一个操作是每次卖掉一张,就将总的票数减去1.有10张票,如果一个人卖票,先做查票.收 ...
- java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理
1 学习多线程知识的根本目标 多线程知识的根本目标是:设计稳健的并发程序. 当然,本文无法回答这个实践性很强的问题(这与具体的业务相关,涉及到具体的策略),本文主要阐述相关知识之间的关系,希望初学者不 ...
- java线程池 锁_java多线程——锁
这是多线程系列第四篇,其他请关注以下: 如果你看过前面几篇关于线程的文字,会对线程的实现原理了然于胸,有了理论的支持会对实践有更好的指导,那么本篇会偏重于线程的实践,对线程的几种应用做个简要的介绍. ...
- java线程下载文件_Java多线程下载文件实例详解
本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...
- java 线程锁概念_Java多线程——锁概念与锁优化
为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...
- java线程异步传值_Java 多线程传值的四种方法
Java 多线程传值的四种方法 作者: sunjs 更新时间:2020-09-11 15:20:16 原文链接 其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数 ...
最新文章
- 等待队列——休眠与唤醒
- 【学习笔记】 Python - Pandas
- java计算两个文本框的值,java 文本框自动获取另外两个文本框的值的乘积
- 一、操作系统——处理机(作业)调度算法:先来先服务算法FCFS、最短作业优先算法SJF(非抢占式)、 最短剩余时间优先算法SRTN(抢占式)、最高响应比优先算法HRRN
- 【网络流】【Dinic】【Next Array】Dinic模板
- 【CSS+HTML】关于字体的说明
- iOS 文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)...
- aspell_如何使用Aspell在Linux命令行上检查拼写
- C#_TextBox_禁止粘贴
- java终结方法_java编程思想之并发(终结任务)
- Windows10永久关闭自动更新,禁止windows10自动更新方法!
- java整人的代码_「vbs代码」vbs表白代码+整人代码,抖音vbscript表白代码 - seo实验室...
- regeneratorRuntime is not defined
- 交会定点(前方交会、测边交会、后方交会)程序C++代码
- 数据库实体之间的关联关系:一对一、一对多、多对多
- PON光模块相关知识
- 逻辑对计算机,对计算机模拟中的逻辑、方法论的几点认识
- 惠普打印机m226dn教程_WiFi当道 手把手教你完成手机无线打印
- MySQL 5.7 安装教程(全步骤、保姆级教程)
- csgo自建局域网服务器,CSGO(KZ模式)服务器搭建常见问题答疑
热门文章
- python装饰器类型错误_有没有办法在继承期间保持装饰器? - python
- 一天搞定CSS:盒模型content、padding、border、margin--06
- (SpringMVC)概述和简单使用
- 转:YUM常用命令介绍
- Java锁详解之ReentrantLock
- Netty专题-(1)初识Netty
- android系统可以破吗,你的手机系统破到什么程度?一键查安卓漏洞
- 华为手机楷体字体下载_手机查看3D打印模型图纸,国产软件SView来了
- java数据写入文件方案,Java如何将字符串数据写入文件?
- python中configparser详解_python ConfigParser模块详解