![](https://img-blog.csdnimg.cn/20201010115745496.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA多线程
JAVA多线程
不善表演
都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,都是转载的,
展开
-
Thread 方法
下表列出了Thread类的一些重要方法测试线程是否处于活动状态。 上述方法是被Thread对象调用的。下面的方法是Thread类的静态方法。原创 2020-09-15 17:04:41 · 85 阅读 · 0 评论 -
Java线程的优先级和执行顺序
在学习运算符时,读者知道各个运算符之间有优先级,了解运算符的优先级对程序幵发有很好的作用。线程也是如此,每个线程都具有优先级,Java 虚拟机根据线程的优先级决定线程的执行顺序,这样使多线程合理共享 CPU 资源而不会产生冲突。优先级概述在 Java 语言中,线程的优先级范围是 1~10,值必须在 1~10,否则会出现异常;优先级的默认值为 5。优先级较高的线程会被优先执行,当执行完毕,才会轮到优先级较低的线程执行。如果优先级相同,那么就采用轮流执行的方式。可以使用 Thread 类中的 setPri原创 2020-09-15 17:04:22 · 2908 阅读 · 4 评论 -
停止(终止)线程
停止线程是在多线程开发中很重要的技术点,掌握此技术可以对线程的停止进行有效的处理。停止线程在 Java 语言中并不像 break 语句那样干脆,需要一些技巧性的处理。使用 Java 内置支持多线程的类设计多线程应用是很常见的事情,然而,多线程给开发人员带来了一些新的挑战,如果处理不好就会导致超出预期的行为并且难以定位错误。本节将讨论如何更好地停止一个线程。停止一个线程意味着在线程处理完任务之前停掉正在做的操作,也就是放弃当前的操作。虽然这看起来非常简单,但是必须做好防范措施,以便达到预期的效果。停止一原创 2020-09-14 14:47:39 · 423 阅读 · 0 评论 -
yieId()方法
yieId() 方法的作用是放弃当前的 CPU 资源,将它让给其他的任务去占用 CPU 执行时间。但放弃的时间不确定,有可能刚刚放弃,马上又获得 CPU 时间片。例 1创建一个线程实现从 1 开始,共累加 5 千万次,要求在线程中输出开始运算时间、结束运算时间以及运算耗时时间。具体实现代码如下:public class MyThread extends Thread { public void run(){ long beginTime=System.currentTimeMillis();原创 2020-09-14 14:00:28 · 750 阅读 · 0 评论 -
getId()方法的作用
getId() 方法的作用非常简单,就是取得正在运行线程的唯一标识。如下代码演示了 getId() 方法的使用:public class Test15{ public static void main(String[] args) { Thread runThread=Thread.currentThread(); System.out.println("当前线程名称:"+runThread.getName()); System.out.原创 2020-09-14 11:52:03 · 5108 阅读 · 0 评论 -
sleep方法的作用(sleep())
sleep() 方法的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)。这个“正在执行的线程”是指 this.currentThread() 返回的线程。例 1下面通过一个案例来理解使用 sleep() 方法判断线程是否活动的标准:public class MyThread extends Thread { public void run(){ try { System.out.println("正在运行的线程名称:"+this.currentThread().getNam原创 2020-09-14 11:51:07 · 3435 阅读 · 0 评论 -
isAlive()方法的作用
isAlive() 方法的作用是判断当前的线程是否处于活动状态。什么是活动状态呢?活动状态就是线程已经启动且尚未终止。线程处于正在运行或准备开始运行的状态,就认为线程是“存活”的。例 1下面通过一个案例来理解 isAlive() 方法判断线程是否活动的标准。假设 MyThread 线程类的代码如下:public class MyThread extends Thread { @Override public void run() { System原创 2020-09-14 11:38:59 · 1284 阅读 · 0 评论 -
currentThread()方法的作用
curentThread() 方法可返回代码段正在被哪个线程调用的信息。下面通过一个示例进行说明。例 1假设在主线程中有如下代码:public class Run1{ public static void main(String[] args) { //调用currentThread()方法输出当前线程名称 System.out.println(Thread.currentThread().getName()); }}执行后在控制台会输出原创 2020-09-14 11:24:24 · 2594 阅读 · 0 评论 -
Java多线程的同步机制:synchronized
如果程序是单线程的,就不必担心此线程在执行时被其他线程“打扰”,就像在现实世界中,在一段时间内如果只能完成一件事情,不用担心做这件事情被其他事情打扰。但是,如果程序中同时使用多线程,好比现实中的“两个人同时通过一扇门”,这时就需要控制,否则容易引起阻塞。为了处理这种共享资源竞争,可以使用同步机制。所谓同步机制,指的是两个线程同时作用在一个对象上,应该保持对象数据的统一性和整体性。Java 提供 synchronized 关键字,为防止资源冲突提供了内置支持。共享资源一般是文件、输入/输出端口或打印机。在原创 2020-09-14 11:10:22 · 1129 阅读 · 0 评论 -
Java非线程安全问题的解决方法
非线程安全。非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。下面用一个示例来学习一下如何解决非线程安全问题。本案例模拟了多线程下的用户登录验证功能。首先编写一个类实现验证功能, LoginCheck 类的代码如下:public class LoginCheck{ private static String username; private static String password; public原创 2020-09-14 10:58:15 · 175 阅读 · 0 评论 -
Java多线程之间访问实例变量
自定义线程类中的实例变量针对其他线程可以有共享与不共享之分,这在多个线程之间进行交互时是很重要的一个技术点。图 1 所示为不共享数据的示例,图 2 所示为共享数据的示例。例 1如图 1 所示,在不共享数据时每个线程都拥有自己作用域的变量,且多个线程之间相同变量名的值也不相同。下面创建一个示例演示这种特性。首先创建自定义的线程类 MyThread, 代码如下:public class MyThread extends Thread { private int count=5; publi原创 2020-09-14 10:44:24 · 508 阅读 · 0 评论 -
Java线程的生命周期及线程的几种状态
线程也具有生命周期,主要包括 7 种状态:出生状态、就绪状态、运行状态、等待状态、休眠状态、阻塞状态、死亡状态,下面对线程生命周期中的 7 种状态做说明。出生状态:用户在创建线程时所处的状态,在用户使用该线程实例调用 start() 方法之前,线程都处于出生状态。就绪状态:也称可执行状态,当用户调用 start() 方法之后,线程处于就绪状态。运行状态:当线程得到系统资源后进入运行状态。等待状态:当处于运行状态下的线程调用 Thread 类的 wait() 方法时,该线程就会进入原创 2020-09-14 10:21:34 · 1364 阅读 · 2 评论 -
Java多线程的实现方式-Thread 类,Runnable 接口
在 Java 的 JDK 开发包中,已经自带了对多线程技术的支持,可以方便地进行多线程编程。实现多线程编程的方式主要有两种:一种是继承 Thread 类,另一种是实现 Runnable 接口。下面详细介绍这两种具体实现方式。继承 Thread 类在学习如何实现多线程前,先来看看 Thread 类的结构,如下:public class Thread implements Runnable从上面的源代码可以发现,Thread 类实现了 Runnable 接口,它们之间具有多态关系。其实,使用继承 T原创 2020-09-11 17:56:26 · 1378 阅读 · 0 评论 -
Java线程的概念:什么是线程?
世间万物都可以同时完成很多工作。例如,人体可以同时进行呼吸、血液循环、思考问题等活动。用户既可以使用计算机听歌,也可以编写文档和发送邮件,而这些活动的完成可以同时进行。这种同时执行多个操作的“思想”在 Java 中被称为并发,而将并发完成的每一件事称为线程。在 Java 中,并发机制非常重要,但并不是所有程序语言都支持线程。在以往的程序中,多以一个任务完成以后再进行下一个任务的模式进行,这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制,允许开发人员在程序中执行多个线程,每个线程完原创 2020-09-11 17:05:42 · 371 阅读 · 0 评论