`

java细节(五)

    博客分类:
  • java
 
阅读更多

1 线程与进程的本质区别:每个进程拥有自己的一整套变量,而线程共享数据。这使得线程间通信更有效,容易。

 

2 java.lang.Thread 1.0

static void sleep(long millis) 休眠给定的毫秒数

 

3 Runnable接口中只有一个方法:run()

4 实现线程有两种方式;实现Runnable接口或是继承Thread(此方式目前已不推荐)。

 

5 线程简单示例:

  class MyRunnable implements Runnable{

public void run(){

task code

}

}

MyRunnable r = new MyRunnable();

Thread t = new Thread(r);

t.start();

 

6 不要调用Thread类或Runnable对象的run方法。直接调用run方法,只会执行同一个线程中的任务,而不会启动新的线程。

 

7 java.lang.Thread 1.0

Thread(Runnable target)  构造一个新线程,用于调用给定target的run方法。

void start()  启动这个线程,将引发调用run方法。

void run()  调用关联Runnable的run方法。

 

8 java.lang.Runnable 1.0

void run() 必须覆盖这个方法,并在其中提供要执行的任务。

 

9 可以用interrupt方法来请求终止线程。stop和suspend方法都遭到了弃用。

 

10 java.lang.Thread 1.0

void interrupt() 向线程发送一个请求。

static boolean interrupted()测试线程是否被中断,产生副作用--将线程中断状态置为false

boolean isInterrupted()测试线程是否中断,不产生副作用。

static Thread currentThread()返回代表当前执行线程的Thread对象。

 

11 线程的六种状态:New(新生)Runnable(可运行)Blocked(阻塞)Waiting(等待)Timed waitin(计时等待)Terminated(被终止)

 

12 java.lang.Thread 1.0

void join()等待终止指定的线程。

void join(long millis)等待指定的线程死亡或者经过指定的毫秒数

Thread.State getState()  5.0获得线程状态。

 

13 线程有10个优先级,范围由1到10 ,优先级由小到大。 可以由 void setPriority(int newPriority)来设定

14 守护进程的唯一用途是为其他线程提供服务,如计时线程。当只剩下守护进程时,虚拟机就退出了。守护进程应该永远不去访问固有资源。

void setDaemon(boolean  isDaemon) 用来标识该线程为守护线程或用户线程。

 

15 用ReentrantLock保护代码块的基本机构如下:

 myLock.lock(); //可重入锁表示线程可以重复地获得已经持有的锁。

try{

   critical section

}

finally{

   myLock.unlock(); 

}

 

16 java.util.concurrent.locks.Lock 

void lock()获得这个锁,若是锁同时被另一个线程拥有,则发生拥塞。

void unlock()释放这个锁。

 

java.util.concurrent.locks.ReentrantLock 

ReentrantLock()构建一个可以被用来保护临界区的可重入锁。

ReentrantLock(boolean fair)构建一个带公平策略的锁。

 

17 java.util.concurrent.locks.Lock

Condition newCondition()返回一个与该锁相关的条件对象。

 

java.util.concurrent.locks.Condition 5.0

void await() 将该线程放到条件的等待集中去。

void signalAll() 解除该条件的等待集中的所有线程的阻塞状态。

void signal()从该条件的等待集中随机选取一个线程,解除其阻塞状态。

 

18 java中的每一个对象都有一个内部锁。如果一个方法用synchornized关键字声明,那么对象的锁将保护整个方法。

即要调用该方法,线程必须获得内部的对象锁。

此时,方法wait等同于上述的await方法,notify/notifyAll方法等同于signal/signalAll方法。

 

19 锁来管理那些试图进入synchornized方法的进程,由条件来管理那些调用wait的进程。

 

20 将静态方法声明为synchornized也是合法的。若调用这种方法,该方法获得相关类对象的内部锁。

分享到:
评论

相关推荐

    java写的五子连珠小游戏

    【Java五子连珠小游戏详解】 Java是一种广泛应用于软件开发的高级编程语言,以其跨平台性和面向对象的特点深受开发者喜爱。在这个"Java写的五子连珠小游戏"中,我们可以深入探讨Java在游戏开发中的应用,以及如何...

    java笔记(细节问题讲的很细)

    这份"java笔记(细节问题讲的很细)"很可能包含了Java语言的核心概念、类库使用、编程技巧以及常见问题的解决方案。 一、Java基础 1. 变量与数据类型:Java提供了八种基本数据类型,包括整型、浮点型、字符型和...

    Java编程思想第五章练习和习题

    《Java编程思想第五章练习与习题》章节涵盖了Java编程中的关键概念,这些概念对于深入理解和熟练运用Java语言至关重要。本章的练习旨在巩固和拓展读者在类、对象、继承、多态等核心主题上的理解。以下是根据描述和...

    java语言的26个细节

    3. **equals方法的覆盖**:在Java中,重写`equals`方法时,应遵循Java规范的五个原则:反射性、对称性、传递性、一致性以及非空性。在自定义类中,尤其是包含引用类型的成员变量时,正确的`equals`实现应该检查这些...

    java编写整合操作系统五个算法

    本话题主要探讨了如何使用Java编程语言来实现操作系统中的五个关键算法,包括作业调度、进程调度、银行家算法、内存分配算法以及文件管理。下面将详细阐述这些知识点。 1. **作业调度**:作业调度是操作系统中的一...

    Java文档五百篇

    以上只是部分可能包含的内容,实际的"Java文档五百篇"可能更丰富,覆盖了更多的细节和实战案例,为Java开发者提供了丰富的学习资源。通过深入阅读和实践,无论是初学者还是有经验的开发者,都能从中获益匪浅,提升...

    Java异常处理细节分析

    ### Java异常处理细节分析 #### 一、Java异常处理机制简介 Java的异常处理机制是其重要的编程特性之一,它采用面向对象的方式处理程序运行过程中可能出现的各种非正常事件。通过这种方式,异常处理代码与正常业务...

    java 学习手册 chm 5本 Java语言入门

    这份"java 学习手册 chm 5本 Java语言入门"的压缩包,显然是为初学者设计的一套全面的Java学习资源,包含了五本以CHM(Compiled Help Manual)格式编译的帮助文档,这种格式通常用于技术手册,便于检索和阅读。...

    ACCP5.0S2教程\使用Java实现面向对象编程(Java OOP)\使用Java实现面向对象编程(Java OOP)上机贯穿案例源码

    2. **封装**:封装是隐藏对象内部的细节,只对外提供公共接口的一种机制。通过访问修饰符(public, private, protected),学习者应学会如何控制数据访问,并理解封装的重要性。 3. **继承**:Java支持单继承,一个...

    Java程序设计语言的细节

    在Java中,当我们覆盖Object类的equals方法时,需要遵循五个原则:反身性、对称性、传递性、一致性以及非空性。然而,以下代码示例可能存在安全隐患: ```java public class Student { private String name; ...

    java环境配置java环境配置

    本文将围绕“Java环境配置”这一主题,详细解析其配置过程中的关键步骤与细节。 #### 二、Java环境配置的关键概念 1. **JDK(Java Development Kit)**:Java开发工具包,是开发Java应用程序的基础。它包含了...

    Java文档五百篇,,,

    Java文档五百篇,这是一份全面且深入的Java学习资源集合,旨在帮助程序员们...对于那些已经具备一定Java基础的开发者来说,这份文档同样有价值,因为它可能包含了深入的专题讨论和技术细节,有助于进一步提升专业水平。

    Java语言的26个细节

    Java规范中定义了`equals`方法应遵循的五项基本原则:自反性、对称性、传递性、一致性以及非空性。然而,即使遵循这些原则,重写`equals`方法时仍需小心处理对象类型的检查。在示例中,`Student`类的`equals`方法...

    Java and the Java Virtual Machine.pdf

    《Java与Java虚拟机》一书深入探讨了Java语言和JVM的关键概念和技术细节,对于Java开发者、系统架构师以及对软件工程感兴趣的读者来说是一本宝贵的参考资料。通过学习本书,读者不仅可以深入了解Java语言和JVM的工作...

    西农java实习报告,并且有代码

    至于"java第七次"和"java第八次",没有具体的细节,但根据通常的学习路径,可能涵盖了多线程编程,包括线程的创建、同步、并发控制,以及并发集合等。此外,也可能是对Java高级特性的探索,比如反射、动态代理或者I/...

    java 技术总结.--java 技术

    封装允许我们将数据和操作数据的方法封装在一个类中,隐藏实现细节;继承使得子类可以继承父类的属性和方法,实现代码复用;多态则允许同一种行为在不同对象上有不同的表现形式,增强了程序的灵活性。 三、异常处理...

    java2实用教程

    5.3 数组的初始化:讲解了静态和动态初始化数组的细节。 5.4 字符串:详细说明了字符串的操作,包括获取字符串长度、比较、检索、截取、替换、转换为数值以及数值转换为字符串等。 5.5 对象的字符串表示:介绍了...

Global site tag (gtag.js) - Google Analytics