Java多线程编程核心技术(一)Java多线程技巧(上)

电脑杂谈  发布时间:2020-04-06 23:07:49  来源:网络整理

linux线程编程_线程编程主进程_多线程编程之一——问题提出

前言

文章的内容,来自博客花园: 像风一样. 有兴趣的朋友可以按照自己的步骤. 可以在历史文章中查看本文的下一部分.

1. 进程和线程

程序是一个进程,程序中的多个任务称为线程.

进程是代表资源分配的基本单位. 线程是在进程中执行计算的最小单位,也是调度操作的基本单位.

例如:

打开计算机上的任务管理器,它将显示当前计算机,QQ,360等的所有进程. 当QQ运行时,将同时运行许多子任务. 例如,当您在打字时发送表情符号,在朋友视频中发送表情符号时,这些不同的功能可以同时运行,每个功能都可以理解为工作中的“线程”.

2. 使用多线程

多线程编程之一——问题提出_线程编程主进程_linux线程编程

在Java的JDK开发工具包中,它已经支持多线程技术,该技术可以轻松地用于多线程编程. 有两种方法可以实现多线程编程,一种是继承Thread类,另一种是实现Runnable接口. 使用继承的Thread类创建线程的最大限制是它们不能继承更多,因此为了支持多重继承,可以完全实现Runnable接口. 应该注意的是,这两种方法在工作中的性质是相同的,没有本质上的区别. 看起来像这样:

2.1,继承Thread类

2.2. 实现Runnable接口

Thread.java类中的start()方法通知“线程计划器”该线程已准备就绪,等待调用线程对象的run()方法. 该过程实际上允许系统安排时间来调用Thread中的run()方法多线程编程之一——问题提出,这意味着线程正在运行. 多线程是异步的. 在代码中启动线程的顺序不是调用线程的顺序.

3. 实例变量和线程安全性

自定义线程类中的实例变量可以与其他线程共享或不共享. 当每个线程都有其自己的实例变量时,这意味着不共享变量. 在共享数据的情况下,多个线程可以访问同一变量. 考虑以下示例:

linux线程编程_线程编程主进程_多线程编程之一——问题提出

上面的代码定义了一个线程类,以实现count变量减一的效果. Runclass Runjava代码如下:

打印结果如下: 线程C计算计数= 3线程B计算计数= 3线程A计算计数= 2线程D计算计数= 1线程E计算计数= 0线程C,B的打印结果均为3,指示C和B同时处理了计数,从而导致“非线程安全问题”. 但是,我们想要的打印结果不会重复出现,而是顺序减少.

在某些JVM中,i--的操作分为以下三个步骤:

获取原始变量的值. 计算i-1. 给i赋值.

在这三个步骤中,如果同时有多个线程正在访问,那么肯定会有非线程安全问题.

解决方案是使用synced关键字使每个线程队列执行run()方法. 修改后的run()方法:

打印结果: 线程B计算计数= 4线程C计算计数= 3线程A计算计数= 2线程E计算计数= 1线程D计算计数= 0关于System.out.println()方法,首先查看System. out.println()方法源代码:

linux线程编程_线程编程主进程_多线程编程之一——问题提出

尽管在println()方法内部使用了synced关键字多线程编程之一——问题提出,但是下面显示的代码在执行时仍可能存在非线程安全性问题.

System.out.println(“ Thread” + Thread.currentThread(). getName()+“ calculate count =” + count--);原因是println()方法在内部是同步的,但是i--操作是在进入println()之前发生的,因此有发生非线程安全问题的可能性.

4. 多线程方法

4.1,currentThread()方法

currentThread()方法可以返回有关代码段正在调用哪个线程的信息.

Thread.currentThread(). getName()

4.2,isAlive()方法

isAlive()方法的功能是确定当前线程是否处于活动状态.

多线程编程之一——问题提出_线程编程主进程_linux线程编程

thread.isAlive();

4.3,sleep()方法

sleep()方法的目的是将当前的“正在执行的线程”置于休眠状态(挂起执行),持续指定的毫秒数. 此“执行线程”是指this.currentThread()返回的线程.

Thread.sleep()

4.4,getId()方法

getId()方法的功能是获取线程的唯一标识符.

thread.getId()

结尾

文章的内容,来自博客花园: 像风一样. 有兴趣的朋友可以按照自己的步骤. 可以在历史文章中查看本文的下一部分.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-166380-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...