首页 Java java教程 Java多线程应用方法全解密

Java多线程应用方法全解密

Dec 15, 2016 am 10:04 AM

Java多线程是我们很多时候都会用到的,在不断学习的过程中有很多的应用方法。下面我们就来学习下这些关键的方法。希望大家有所帮助。首先我们先来看看具体的方法分类。

  Java多线程程序中经常用到的方法有以下几个:run(),start(),wait(),sleep(),notify(),notifyAll(),yield(),join(),还有一个重要的关键字 synchronized。下面分别对这些方法进行解释:

  一、run()和start()

  这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。

  二、关键字Synchronized

  这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被“上锁”,阻止其他线程访问。当前线程访问完这部分数据后释放锁标志,其他线程就可以访问了。

  1.public ThreadTest implements Runnable

  2.{

  3.public synchronized void run(){

  4.for(int i=0;i<10;i++)

  5.{

  6.System.out.println(" " + i);

  7.}

  8.}

  9.public static void main(String[] args)

  10.{

  11.Runnable r1 = new ThreadTest();

  12.Runnable r2 = new ThreadTest();

  13.Thread t1 = new Thread(r1);

  14.Thread t2 = new Thread(r2);

  15.t1.start();

  16.t2.start();

  17.}

  18.}

  以上这段程序中的 i 变量并不是共享数据,也就是这里的Synchronized关键字并未起作用。因为t1,t2两个线程是两个对象(r1,r2)的线程。不同的对象其数据是不同的,所以r1和r2两个对象的i变量是并不是共享数据。

  当把代码改成如下:Synchronized关键字才会起作用

  19.Runnable r = new ThreadTest();

  20.Thread t1 = new Thread(r);

  21.Thread t2 = new Thread(r);

  22.t1.start();

  23.t2.start();

  以上就是对Java多线程的详细介绍, 更多相关文章请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

揭秘HTTP状态码460的出现原因 揭秘HTTP状态码460的出现原因 Feb 19, 2024 pm 08:30 PM

解密HTTP状态码460:为什么会出现这个错误?引言:在日常的网络使用中,经常会遇到各种各样的错误提示,其中包括HTTP状态码。这些状态码是HTTP协议定义的一种机制,用于指示请求的处理情况。在这些状态码中,有一种比较罕见的错误码,即460。本文将深入探讨这个错误码,并解释为什么会出现这个错误。HTTP状态码460的定义:首先,我们需要了解HTTP状态码的基

word解密怎么设置 word解密怎么设置 Mar 20, 2024 pm 04:36 PM

现如今的工作环境中,大家的保密意识越来越强了,在使用软件的时候也常常进行加密操作,对文件进行保护。尤其是重点的文件,保密意识更要增加,时时刻刻将文件的安全性放在首要位置。那么关于word解密不知道大家理解得怎么样,具体该如何操作?今天我们就通过下文的讲解为大家实际展示一下关于word解密的过程,需要学习word解密知识的小伙伴不要错过今天的课程。首先需要进行解密操作来保护文件,这意味着对文件进行了保护文档处理。在对文件进行此处理后,再次打开文件会弹出提示。解密文件的方法是输入密码,这样就可以直接

ThinkPHP6数据加密与解密:保护敏感数据安全 ThinkPHP6数据加密与解密:保护敏感数据安全 Aug 25, 2023 pm 10:52 PM

ThinkPHP6数据加密与解密:保护敏感数据安全概述:随着互联网的迅速发展,数据安全问题变得越来越重要。特别是在网络应用开发中,对于一些敏感数据的保护至关重要。ThinkPHP6框架提供了一套强大的数据加密与解密机制,通过对敏感数据进行加密处理,可以有效地提高数据的安全性。使用ThinkPHP6的加密函数ThinkPHP6框架内置了多种加密函数,可以根据需

Java开发技巧揭秘:实现数据加密与解密功能 Java开发技巧揭秘:实现数据加密与解密功能 Nov 20, 2023 pm 05:00 PM

Java开发技巧揭秘:实现数据加密与解密功能在当前信息化时代,数据安全成为一个非常重要的问题。为了保护敏感数据的安全性,很多应用程序都会使用加密算法来对数据进行加密。而Java作为一种非常流行的编程语言,也提供了丰富的加密技术和工具库。本文将揭秘一些Java开发中实现数据加密和解密功能的技巧,帮助开发者更好地保护数据安全。一、数据加密算法的选择Java支持多

详解Java中volatile关键字的使用场景及其作用 详解Java中volatile关键字的使用场景及其作用 Jan 30, 2024 am 10:01 AM

Java中volatile关键字的作用及应用场景详解一、volatile关键字的作用在Java中,volatile关键字用于标识一个变量在多个线程之间可见,即保证可见性。具体来说,当一个变量被声明为volatile时,任何对该变量的修改都会立即被其他线程所知晓。二、volatile关键字的应用场景状态标志volatile关键字适用于一些状态标志的场景,例如一

PHP加密和解密函数大全:md5、sha1、base64_encode等函数的安全应用方法 PHP加密和解密函数大全:md5、sha1、base64_encode等函数的安全应用方法 Nov 18, 2023 pm 04:18 PM

PHP加密和解密函数大全:md5、sha1、base64_encode等函数的安全应用方法,需要具体代码示例在网络应用的开发中,数据的加密和解密是非常重要的。PHP作为一种流行的服务器端脚本语言,提供了多种加密和解密函数,本文将介绍常用的函数及其安全应用方法,并提供具体的代码示例。md5函数md5函数是最常见的一种加密函数,可以将任意长度的字符串转换为32位

CentOS中详细介绍Vim文本的加密和解密方法 CentOS中详细介绍Vim文本的加密和解密方法 Dec 31, 2023 pm 02:49 PM

CentOS用vim/vi给文件加密和解密一、利用vim/vi加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了;缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除;vi编辑器相信大家都很熟悉了吧,vi里有一个命令是给文件加密的,举个例子吧:1)首先在root主目录/root/下建立一个实验文件text.txt:[root@www~]#vim/vitext.txt2)进到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车;3)

Java多线程环境下的异常处理 Java多线程环境下的异常处理 May 01, 2024 pm 06:45 PM

多线程环境下异常处理的要点:捕捉异常:每个线程使用try-catch块捕捉异常。处理异常:在catch块中打印错误信息或执行错误处理逻辑。终止线程:无法恢复时,调用Thread.stop()终止线程。UncaughtExceptionHandler:处理未捕获异常,需要实现该接口并指定给线程。实战案例:线程池中的异常处理,使用UncaughtExceptionHandler来处理未捕获异常。

See all articles