Java线程的相关方法详细解析
start() 启动线程方法
run() 调用start()方法时,真正执行的就是该方法的方法体
sleep() 让当前线程睡眠,睡眠到期自动苏醒,并进入可运行状态,而不是运行状态
yield() 暂停当前正在执行的线程对象,JVM线程调度程序基于优先级的抢先机制调用其他优先级高的线程,优先级的取值范围1 (Thread.MIN_PRIORITY) -- 10( Thread.MAX_PRIORITY),创建线程默认是5 (NORM_PRIORITY)
setPriority(int newPriority) 设置线程新的优先级
join() 等待该线程终止才开始执行当前线程;如线程A中调用线程B的join()方法,等待线程B执行终止才继续执行线程A,线程B执行终止,线程A进入可运行状态。
相关推荐
-
java线程之join方法的使用介绍
在上面的例子中多次使用到了Thread类的join方法.我想大家可能已经猜出来join方法的功能是什么了.对,join方法的功能就是使异步执行的线程变成同步执行.也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法.如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完.而使用join方法后,直到这个线程退出,程序才会往下执行.下面的代码演示了join的用法.
-
Java多线程下载的实现方法
复制代码 代码如下: package cn.me.test; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; /** * 多线程下载 * 1:使用RandomAccessFile在任意的位置写入数据. * 2:需要计算第一个线程下载的数据量,可以平均分配.如果不够平均时, * 则直接最后一个线程处理相对较少
-
JAVA实现多线程的两种方法实例分享
java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了.一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程. Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法: 复制代码 代码如下: Thread t = new Thread(); t.start();
-
java线程之用Thread类创建线程的方法
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口.在使用Runnable接口时需要建立一个Thread实例.因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例.Thread类的构造方法被重载了八次,构造方法如下: 复制代码 代码如下: public Thread( ); public Thread(Runnable target); public Thread(String name); public Thread
-
解析Java线程同步锁的选择方法
在需要线程同步的时候如何选择合适的线程锁?例:选择可以存入到常量池当中的对象,String对象等 复制代码 代码如下: public class SyncTest{ private String name = "name";public void method(String flag) { synchronized (name) { System.out.println(flag + ", invoke metho
-
java线程之使用Runnable接口创建线程的方法
实现Runnable接口的类必须使用Thread类的实例才能创建线程.通过Runnable接口创建线程分为两步: 1. 将实现Runnable接口的类实例化. 2. 建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法. 最后通过Thread类的start方法建立线程. 下面的代码演示了如何使用Runnable接口来创建线程: 复制代码 代码如下: package mythread; public class MyRunnable implements Runn
-
java向多线程中传递参数的三种方法详细介绍
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据.本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法. 欲先取之,必先予之.一般在使用线程时都需要有一些初始化数据,然后线程利用这些数据进行加工处理,并
-
java多线程应用实现方法
以前没有写笔记的习惯,现在慢慢的发现及时总结是多么的重要了,呵呵.虽然才大二,但是也快要毕业了,要加油了. 这一篇文章主要关于java多线程,主要还是以例子来驱动的.因为讲解多线程的书籍和文章已经很多了,所以我也不好意思多说,呵呵.大家可以去参考一些那些书籍.我这个文章主要关于实际的一些问题.同时也算是我以后复习的资料吧,.呵呵大家多多指教. 同时希望多结交一些技术上的朋友.谢谢. ---------------------------------------------------------
-
Java线程的相关方法详细解析
start() 启动线程方法 run() 调用start()方法时,真正执行的就是该方法的方法体 sleep() 让当前线程睡眠,睡眠到期自动苏醒,并进入可运行状态,而不是运行状态 yield() 暂停当前正在执行的线程对象,JVM线程调度程序基于优先级的抢先机制调用其他优先级高的线程,优先级的取值范围1 (Thread.MIN_PRIORITY) -- 10( Thread.MAX_PRIORITY),创建线程默认是5 (NORM_PRIORITY) setPriority(int ne
-
Java线程状态运行原理解析
这篇文章主要介绍了Java线程状态运行原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码实例如下 package com.fgy.demo05; /** * 等待唤醒案例:线程之间通信 * 注意: * 同步使用的锁对象必须唯一 * 只有锁对象才能调用wait和notify()/notifyAll()方法 */ public class Demo1WaitAndNotify { public static void main(Strin
-
Java线程池ForkJoinPool实例解析
这篇文章主要介绍了Java线程池ForkJoinPool实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个"小任务",把多个"小任务"放到多个处理器核心上并行执行:当多个"小任务"执行完成之后,再将这些执行结果合并起来即可.这种思想值得学习. import java.io.IOExcept
-
Java线程安全基础概念解析
Java线程安全初步了解.JAVA线程安全从总体上来说,是指Java对象在多线程运行环境下的一种特性,表现为常规(区别于特殊调用情况)情况下每次调用都能得到正确的逻辑结果.从本质上来说,将对象的方法行为加上了同步控制逻辑,而调用者无须做其他额外的同步控制就可以安全放心的使用对象. 1.线程安全的定义 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安
-
java线程的基础实例解析
java中建立线程可以有两种方式,分别是继承Thread类和实现Runnable接口. 继承Thread public class MyThread extends Thread{ public MyThread(String name){ super(name); } int i; public void run(){ for(i=0;i<5;i++){ System.out.println(getName()+"--"+i); } } public static void m
-
Java关于重排链表详细解析
1.题目 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0→ L1 → - → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → - 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 来源:力扣(LeetCode) 2.解析 将一个链表分为两个子链表,然后将其归并. 我们要先找到链表的中间节点,在中间节点将其断开 然后反转后半链表 再将两个子链表逐个连起来 将后半链表反转,独立成一个子链表. 最
-
Java线程安全状态专题解析
一.观察线程的所有状态 线程的状态是一个枚举类型 Thread.State public static void main(String[] args) { for (Thread.State state : Thread.State.values()){ System.out.println(state); } } NEW: 安排了工作, 还未开始行动 RUNNABLE: 可工作的. 又可以分成正在工作中和即将开始工作.就绪状态 BLOCKED: 这几个都表示排队等着其他事情 WAITING:
-
非常适合新手学生的Java线程池超详细分析
目录 线程池的好处 创建线程池的五种方式 缓存线程池CachedThreadPool 固定容量线程池FixedThreadPool 单个线程池SingleThreadExecutor 定时任务线程池ScheduledThreadPool ThreadPoolExecutor创建线程池(十分推荐) ThreadPoolExecutor的七个参数详解 workQueue handler 如何触发拒绝策略和线程池扩容? 线程池的好处 可以实现线程的复用,避免重新创建线程和销毁线程.创建线程和销毁线程对
-
浅谈Java线程Thread.join方法解析
join字面上是加入的意思,我们先看看join方法的解释和实现. /** * Waits for this thread to die. * 调用方线程(调用join方法的线程)执行等待操作,直到被调用的线程(join方法所属的线程)结束,再被唤醒 * <p> An invocation of this method behaves in exactly the same * way as the invocation * * * @throws InterruptedException *
-
Java Stream.reduce()用法详细解析
目录 基本使用 额外举例 并行读流 处理异常 复杂对象的处理 总结 在学习这个函数的用法之前,我们要先知道这个函数参数的意义 基本使用 先举一个简单的例子: 算法题:Words题目描述每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V. 解答要求时间限制:1000ms, 内存限制:100MB输入输入只有一行,包含一个字符串S(长度不会超过100),代表整个句子,句子中只包含大小写的英文字母,每个单词之间有一
随机推荐
- 详解JS中的立即执行函数
- 利用iframe实现ajax跨域通信的实现原理(图解)
- JavaScript获取onclick、onchange等事件值的代码
- js中创建对象的几种方式示例介绍
- js使用DOM设置单选按钮、复选框及下拉菜单的方法
- Python本地与全局命名空间用法实例
- Repeater的FooterTemplate显示某列总计思路与代码
- jQuery对JSON数据进行排序输出的方法
- Python的Django框架安装全攻略
- C语言中的强符号和弱符号介绍
- 通过JAVAScript实现页面自适应
- Python中线程编程之threading模块的使用详解
- linux入门教程1 系统简介
- jquery的相对父元素和相对文档定位示例代码
- listview 选中高亮显示实现方法
- Android手势ImageView三部曲 第三部
- 解决vue中监听input只能输入数字及英文或者其他情况的问题
- Django学习教程之静态文件的调用详解
- elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
- python 实现手机自动拨打电话的方法(通话压力测试)