JAVA—线程(Thread)】的更多相关文章

线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的状态,共有6种不同的状态 详细定义如下: public enum State { /** * 至今尚未启动的线程的状态. */ NEW, /** * 可运行线程的线程状态. * 处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处理器. */ RUNNA…
(原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: --启动线程 --线程的调度 --Thread 类的简介 --线程的同步/异步 --wait() 和 notify(),notifyAll()方法 在讲线程之前,先说下进程. 进程:是运行系统中,每个独立运行的程序.例如win7,我既用酷狗软件听歌,又玩 LOL 游戏,又上QQ,那么这就有3个进程.…
java 语言中允许线程访问共享变量,为了保证共享变量能被准确和一致的更新,Java 语言提供了volatile 关键字,也就是我们所说的内存一致性: 问题抛出:(尝试去运行下面代码,以及将volatile 加上的运行结果) /** * 问题抛出 * @param args */ public class Volatile01 { public /*volatile*/ boolean flag = true; public static void main(String[] args) thr…
Callable: 从官方文档说起: 通过实现callable 的called 方法可以使一个任务可以返回一个结果以及可能抛出一个异常: callable 与runnable 是相似的,可以被其他线程潜在的执行,但是runnable不会返回结果总是viod 以及不会抛出检测异常: /** * A task that returns a result and may throw an exception. * Implementors define a single method with no…
Executors : Executors ,就是一个线程工具类:大部分操作线程的方法,都可以在这个工具类中就行创建,执行,调用一些线程的方法: Executor : 用于执行和提交一个runnable 任务:就是将线程的创建与执行就行了解藕: 像: new Thread(new(RunnableTask())).start()} 可以被替代为 Executor executor = anExecutor; executor.execute(new RunnableTask1());: 线程池…
在jdk 1.5 后,Java 引入了lock 锁来替代synchronized ,在使用中,lock锁的使用更加灵活,提供了灵活的 api ,不像传统的synchronized ,一旦进入synchronized中,方法是无法打断的,也就是说有时候会陷入漫长的等待当中:以及进行公平锁的创建(synchronized 说非公平的锁): 一,使用规范: lock.lock(); try { //doSomeThing } finally { lock.unlock(); } 就相当于: synch…
利用wait 与notifyAll 方法进行演示生产与消费的模式的演示,我们两个线程负责生产,两个线程消费,只有生产了才能消费: 在effective Java 中有说过: 1. 在Java 中 ,使用wait() 方法,你99% 情况都是要和while 连用 2. 永远都要使用notifyAll() 而不是notify(); package com.java.baseknowledge.concurrent.thread; /** * Thread class and Object metho…
线程技术第三篇: 线程的状态: 1. 创建状态: 当用new 操作符创建一个新的线程对象时,该线程就处于创建状态,系统不为它分配资源 2.可运行状态:当线程调用start 方法将为线程分配必须的系统资源,安排其运行,并调用线程体中的run方法,这样线程就处于可运行状态 3.不可运行状态:当调用了sleep()方法,或者object 类中的wait() 方法,线程输入输出阻塞 4.消亡状态:run 方法执行完后,就会自动消亡 线程优先级: 1.线程创建时,子继承父的线程优先级 2.可以通过线程方法…
永远不要忘记最基础的东西,只有把最基础的知识打牢靠,才能够使你走的更远,我将从今天开始,进行线程知识的回顾,一些常用知识点,以及java1.5 引入的并发库,进行详细的讲解与总结 创建线程的目的是为了开启一条执行路径,去运行指定的代码: java 对线程的创建java.lang包下,我们先看关于Thread 源码文档,看它对Thread 有什么解释呢? * A <i>thread</i> is a thread of execution in a program. The Java…
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 1.假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒? 2.某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) .既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么? 我们先回顾一下操作系…