我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中多线程怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中多线程怎么实现

这篇文章主要讲解了“Java中多线程怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中多线程怎么实现”吧!

线程是一些可以并行的,独立的执行的代码.之前我编的程序都只能做一件事情,也就是只有一个线程.多线程的编程就是可以将程序任务分成多个并行的子任务,同时运行,互不干扰.我对多线程的理解是从格斗游戏得来的.格斗游戏中两人对打就是通过两个线程来实现的吧,否则如何能够你出你的招,我发我的冲击波呢.

(1月18日)突然想到一个问题,补充一下.多线程是不是我们通常所说的多任务呢?我的理解是,不能这样说也可以这样说.
  简单说来,多线程提供了一种在进程内部进行多个线程并行调度的机制,而多任务则提供的是在一个操作系统内部运行多个进程的机制.
  多任务操作系统(如windows)的基本原理是这样的:操作系统将cpu的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务.Whoops,真绕口.
  如上,多线程和多任务是有很明显的区别的.但是再想一下,在一个应用程序内实现多线程不也是靠CPU分配时间片吗?既然原理是相同的,那么多线程也可以说是多任务的.


一个Java程序启动后,就已经有一个线程在运行,我们可以通过下面的例子来初步建立一个线程的实际印象

class testthread{
  public static void main(String args[]){
  Thread t=Thread.currentThread();
  t.setName("This Thread is running");
  System.out.println("The running thead:"+t);
  try{
  for(int i=0;i<5;i++)
  {
  System.out.println("Sleep time"+i);
  Thread.sleep(1000);//挂起线程,就是让线程休息一会儿,不占用系统资源,因此其它线程可以继续.这里的Thread缺省表示主线程
  }
  }catch(InterruptedException e){System.out.println("thread has wrong");}
  }
}


  这只是一个线程,那么我们怎么实现多个线程呢?又怎样让线程做我安排它要做的事情呢?
  实现线程体的构造有两种方法.
  第一种方法是通过继承构造线程体.
  在Java中专门有一个Thread类,这个类里面有一个函数run(),里面记录着线程要完成的操作,就好像通常所说的主函数main()一样,run()函数运行完了,线程就结束了.通过继承这个类,我们可以定义我们自己的线程,在run函数中告诉它该做什么事情.下面的程序就是继承了一个SimpleThread类,用两个线程来输出HelloWorld.

public class TwoThread{

  public static void main(String args[]){
  new SimpleThread("HelloWorld1").start();//创建两个线程的实例,就这么简单
  new SimpleThread("HelloWorld2").start();
  }

}
  class SimpleThread extends Thread{ file://真正的内容在这里
  public SimpleThread(String str){
  super(str);//super代表SimpleThread类的直接父类,这里就是Thread
  }

file://我们要线程做的事情都在这里了
  public void run(){
  for(int i=0;i<10;i++){
  System.out.println(i+" "+getName());
  try{
  sleep((int)(Math.random()*1000));
  }catch(InterruptedException e){}
  }
  System.out.println("Done!"+getName()); 
  }
}

运行的结果是两个线程交替显示各自的HelloWorld十次,输出是混在一起的,因为两个线程是同时运行的.


第二种方法是通过启动接口构造线程体.在任意实现了启动接口的类当中,比如下面的twothread类,都可以实现多线程,我所需要做的就是在这个类的定义当中加上一个run函数.例程如下

class TwoThread implements Runnable{
  TwoThread(){
  Thread t1=Thread.currentThread();
  t1.setName("The first main thread");
  System.out.println("The running thead:"+t1);
  Thread t2=new Thread(this,"the second thread");//注意这里的this,它表明新线程即t2将会做的事情由this对象来决定,也就是由twothread的run函数来决定
  System.out.println("create another thread");
  t2.start();//调用该函数将使线程从run函数开始执行
  try{
  System.out.println("first thread will sleep");
  Thread.sleep(3000);
  }catch(InterruptedException e){System.out.println("first thread has wrong");}
  System.out.println("first thread exit");
  }

  public void run()//定义run()函数,在本程序中也就是t2这个新的线程会做的事情
  {
  try{
  for(int i=0;i<5;i++)
  {
  System.out.println("sleep time for thread 2:"+i);
  Thread.sleep(1000);
  }
  }catch(InterruptedException e){System.out.println("thread has wrong");}
  System.out.println("second thread exit");
  }
  public static void main(String args[]){
  new TwoThread();//触发构造函数
  }
}

运行的结果如下:
The running rhread:Thread[The first main thread,5,main]
creat another thread
first thread will sleep
Sleep time for thread 2:0
Sleep time for thread 2:1
Sleep time for thread 2:2
first thread exit
Sleep time for thread 2:3
Sleep time for thread 2:4
second thread exit

扯扯别的.我们注意到很多Java程序开头都有import语句,好像和C的#include和Delphi的uses很象哦.import是Java的关键词,负责调入包(package).包由一组类和界面组成,是管理大型名字空间,避免名字冲突的工具.
Java提供了很多包供我们使用,主要如下:

java.applet
设计Applet的类

java.awt
窗口工具包,包含了产生GUI元素的类

java.io
文件输入输出类

java.lang
java语言类,包含:对象,线程,异常出口,系统,整数,原点,数字,字符等

java.NET
Socket类及与TCP/IP相关的类

java.util
一些程序的同步类

感谢各位的阅读,以上就是“Java中多线程怎么实现”的内容了,经过本文的学习后,相信大家对Java中多线程怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中多线程怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中多线程怎么实现

这篇文章主要讲解了“Java中多线程怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中多线程怎么实现”吧!线程是一些可以并行的,独立的执行的代码.之前我编的程序都只能做一件事情
2023-06-03

Java中怎么实现多线程同步

今天就跟大家聊聊有关Java中怎么实现多线程同步,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。让我们从JVM的角度来看看锁这个概念:在Java程序运行时环境中,JVM需要对两类线程共
2023-06-17

Java中怎么实现多线程通信

Java中怎么实现多线程通信,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述多线程通信问题,也就是生产者与消费者问题生产者和消费者为两个线程,两个线程在运行过程中交替睡眠,生
2023-06-20

Java中怎么实现多线程递归

这篇文章将为大家详细讲解有关Java中怎么实现多线程递归,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。public voidParallelRecursive(final Execut
2023-06-17

Java中怎样实现多线程编程

今天就跟大家聊聊有关Java中怎样实现多线程编程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、理解Java多线程编程Java多线程编程是这样一种机制,它允许在程序中并发执行多个指
2023-06-17

Java中怎么实现一个多线程程序

Java中怎么实现一个多线程程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java多线程程序设计详细解析一、理解Java多线程Java多线程是这样一种机制,它允许在程序中并
2023-06-17

Java中多线程Reactor模式怎么实现

这篇文章主要讲解了“Java中多线程Reactor模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中多线程Reactor模式怎么实现”吧!多线程Reactor模式旨在分配多
2023-06-21

怎么在Java中实现多线程排序

这期内容当中小编将会给大家带来有关怎么在Java中实现多线程排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2
2023-06-14

java中多线程的实现

第一种方式,定义Thread类的子类://第一种方法public class MyThread extends Thread { @Override public void run() { String name = getName(
java中多线程的实现
2020-01-08

Java中怎样实现多线程同步

本篇文章给大家分享的是有关Java中怎样实现多线程同步,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。不同步时的代码Bank.java package threadTest;
2023-06-17

Java中怎么实现多线程事务管理

Java中怎么实现多线程事务管理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、继承Thread类第一种方法是继承Thread类,重写run()方法public clas
2023-06-20

怎么在Java中使用ReentrantReadWriteLock实现多线程

本篇文章给大家分享的是有关怎么在Java中使用ReentrantReadWriteLock实现多线程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中
2023-06-14

怎么在java中实现多线程高并发

这篇文章将为大家详细讲解有关怎么在java中实现多线程高并发,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.JMM数据原子操作read(读取)∶从主内存读取数据load(载入):将主内存读
2023-06-14

VB.NET中怎么实现多线程

本篇文章为大家展示了VB.NET中怎么实现多线程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET(Visual Basic.NET)是为适应Microsoft .NET框架的需要,对Vis
2023-06-17

HTML5中怎么实现多线程

这篇文章将为大家详细讲解有关HTML5中怎么实现多线程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、明确 JavaScript 是单线程JavaScript 语言的一大特点就是单线程,也
2023-06-09

怎么实现JAVA 多线程的浅析

这期内容当中小编将会给大家带来有关怎么实现JAVA 多线程的浅析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JAVA 的多线程浅析一、JAVA 语言的来源、及特点在这个高速信息的时代,商家们纷纷把信息、
2023-06-03

怎么在java中实现一个多线程爬虫

怎么在java中实现一个多线程爬虫?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android
2023-06-14

Java中怎么利用Synchronized实现多线程同步

这期内容当中小编将会给大家带来有关Java中怎么利用Synchronized实现多线程同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用同步的原因1. 在系统中对访类要使用多线程进行访问;2. 在该类
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录