JAVA线程
# JAVA线程
学要无止尽
任职于达摩院自动驾驶实验室;负责自动驾驶云端计算的架构和研发;
展开
-
java中5种异步转同步方法
先来说一下对异步和同步的理解:同步调用:调用方在调用过程中,持续等待返回结果。异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数。其实,两者的区别还是很明显的,这里也不再细说,我们主要来说一下Java如何将异步调用转为同步。换句话说,就是需要在异步调用过程中,持续阻塞至获得调用结果。不卖关子,先列出五种方法,然后一一举例说明:使用wait和notify方法,synchronized 使用条件锁ReentrantLock Future原创 2020-10-21 17:45:37 · 4110 阅读 · 0 评论 -
线程生命周期问题
1)初始状态:此时线程只是处于JVM进程中,只是创建了一个线程对象,并没有真正开始运行。2)可动行状态:调用线程对象的一个start()方法,此时线程才真正的被创建,进入可运行状态,等待CPU的调度。“万事俱备,只欠CPU”。3)运行状态:正在运行的线程,此时它拥有CPU的执行权。4)阻塞状态:运行状态中的线程,如果正在等待用户输入或调用了sleep()和join()等方法都会导致线程原创 2013-01-17 14:45:03 · 378 阅读 · 0 评论 -
用户线程 和 守护线程
Java有两种Thread:“守护线程Daemon”与“用户线程User”。 我们之前看到的例子都是用户,守护线程是一种“在后台提供通用性支持”的线程,它并不属于程序本体。 从字面上我们很容易将守护线程理解成是由虚拟机(virtual machine)在内部创建的,而用户线程则是自己所创建的。事实并不是这样,任何线程都可以是“守护线程Daemon”或“用户线程User”。他们在几乎每个方面原创 2013-01-17 14:45:39 · 569 阅读 · 0 评论 -
Java Socket 多线程编程、通信模型及socket协议详解
1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 你会使用它们吗?5. 深入补充:socket通信协议: 1,什么是TCP/IP、UDP? TCP/IP(Transmission Control Protoc转载 2013-03-07 15:34:40 · 761 阅读 · 0 评论 -
Java线程中run和start方法的区别
Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;package com.ljq.test;public class ThreadTest { /** * 观察直接转载 2013-03-27 21:09:20 · 646 阅读 · 0 评论 -
java concurrent 探秘
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的转载 2014-03-12 10:21:22 · 545 阅读 · 0 评论 -
Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务转载 2015-03-25 12:45:10 · 479 阅读 · 0 评论