Java内存模型 前面讲到了Java线程之间的通信采用的是共享内存模型,这里提到的共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memor ...
分类:
编程语言 时间:
2018-09-17 19:46:25
阅读次数:
195
java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是 ...
分类:
编程语言 时间:
2018-09-16 16:16:24
阅读次数:
185
今天晚上参加了新浪的笔试,感觉考的都是很基础的题目。学计算机的同学只要上专业课认真了,基本选择题就不是很难。选择题大部分考察的是操作系统和计算机网络原理这两门课 题型:10个选择(3/个),5个综合应用(70分) 选择题 死锁(操作系统) Java线程状态的转换(操作系统) 选项:就绪态 ->运行态 ...
分类:
编程语言 时间:
2018-09-16 00:59:55
阅读次数:
240
一、基本概念 Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是 ...
分类:
编程语言 时间:
2018-09-15 00:39:59
阅读次数:
205
Java线程 Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 Java可以用如下方式创建一个线程: 执行该线程可以调用该线程的start()方法: 在上面的例子中,我们并没有为线程编写运行代码,因此调用该方法后线程就终止了。 创建、执行线程的方式 无 ...
分类:
编程语言 时间:
2018-09-14 16:08:32
阅读次数:
197
构造一个线程池为什么需要几个参数?如果避免线程池出现OOM?Runnable和Callable的区别是什么?本文将对这些问题一一解答,同时还将给出使用线程池的常见场景和代码片段。 基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比 ...
分类:
编程语言 时间:
2018-09-13 16:20:24
阅读次数:
208
1、相关类 Executors ExecutorService Callable ThreadPool Future 2、相关接口 Executor Executor接口的使用: ExecutorService接口的使用:(继承Executor接口) *submit方法(执行runnble、call ...
分类:
编程语言 时间:
2018-09-11 14:17:55
阅读次数:
264
Thread.currentThread方法 Thread的静态方法currentThread方法可以用于获取运行当前代码片段的线程。 Thread current = Thread.currentThread(); public class CurrentThreadDemo { public s ...
分类:
编程语言 时间:
2018-09-06 14:38:22
阅读次数:
182
进行多线程代码的实现有两种方式: 1、继承Thread类 2、实现Runnable接口 方法一:继承thread类 当一个类需要按照多线程的方式处理时,可以让这个类直接继承自Thread类即可,而且继承的时候要覆写好Thread类中提供的run()方法: 范例:按照要求定义一个线程类 class M ...
分类:
编程语言 时间:
2018-09-05 21:47:25
阅读次数:
150
一、作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码: 上面程序结果是先打印完小明线程,在打印小东线程; 上面注释也大概说明了join方法的作用:在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。注 ...
分类:
编程语言 时间:
2018-08-31 11:41:56
阅读次数:
168