java线层的使用】的更多相关文章

class Do8 { public static void main(String[] args) { Resource r =new Resource(); Input in =new Input(r); Output out=new Output(r); Thread t1=new Thread(in); Thread t2=new Thread(out); t1.start(); t2.start(); } } class Resource { String name; String s…
class Do3 { public static void main(String[] args) { XC d1=new XC("小王"); XC d2=new XC("xiaoli"); d1.start();//启动线程,调用run()方法 d2.start(); System.out.println("Hello World!"); } } class XC extends Thread//继承线程 { private String n…
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…
import java.util.concurrent.locks.*; class Do9 { public static void main(String[] args) { Ds d=new Ds(); Thread t1=new Thread(d); Thread t2=new Thread(d); Thread t3=new Thread(d); t1.start(); t2.start(); t3.setDaemon(true);//变成后台线层,要在start()之前 t3.sta…
import java.util.concurrent.locks.*; class Do9 { public static void main(String[] args) { Resource r=new Resource(); Shengchan sc=new Shengchan(r); Xiaoshou xs=new Xiaoshou(r); Thread th1=new Thread(sc); Thread th2=new Thread(sc); Thread th3=new Thre…
/* 多个线层同时操作一个数据 会导制数据超出 同步代码块 synchronized(对像) { 需要同步的代码 } */ class Do7 { public static void main(String[] args) { Piao p1=new Piao(); Thread t1=new Thread(p1); Thread t2=new Thread(p1); Thread t3=new Thread(p1); Thread t4=new Thread(p1); t1.start();…
JAVA多线程与并发 进程与线程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 所有与进程相关的资源,都被记录在PCB(进程控制块)中 进程是抢占处理机的调度单位:线程属于某个进程,共享其资源 线程只由堆栈寄存器.程序计数器和TCB(线程控制块)组成 总结: 线程不能看做独立应用,而进程可看做独立应用 进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径 线程没有独立的地址空间,多进程的程序比多线程的程序健壮 进程的开销比线程大,切换代价高 Java进程和线程的关系 Jav…
共享模式acquire实现流程 上文我们讲解了AbstractQueuedSynchronizer独占模式的acquire实现流程,本文趁热打铁继续看一下AbstractQueuedSynchronizer共享模式acquire的实现流程.连续两篇文章的学习,也可以对比独占模式acquire和共享模式acquire的区别,加深对于AbstractQueuedSynchronizer的理解. 先看一下共享模式acquire的实现,方法为acquireShared和acquireSharedInte…
本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star.fork哈 文章首发于我的个人博客: www.how2playlife.com //一般讨论集合类无非就是.这里的…
13.Java内存模型与线程 1.Java内存模型 Java 内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到主内存和从内存中取出变量值的底层细节 该变量指的是 实例字段.静态字段.和构成数组对象的元素,不包含线程私有的 局部变量和方法参数 Java线程 -> 工作内存 -> Save 和 load 操作 -> 主内存 每个线程都有自己的工作内存,工作内存中保存了该线程使用的变量的主内存副本,线程对变量的所有操作(读取赋值)都在工作内存中进行,而不能直接读…
线程池是很常用的并发框架,几乎所有需要异步和并发处理任务的程序都可用到线程池. 使用线程池的好处如下: 降低资源消耗:可重复利用已创建的线程池,降低创建和销毁带来的消耗: 提高响应速度:任务到达时,可立即执行,无需等待线程创建: 提高线程的可管理性:线程池可对线程统一分配.调优和监控. 原理 线程池的原理非常简单,这里用处理流程来概括: 线程池判断核心池里的线程是否都在执行任务,如果不是,创建一个新的线程来执行任务: 如果核心线程池已满,则将新任务存在工作队列中: 如果工作队列满了,线程数量没有…
前言 很高兴遇见你~ 借助于很多强大的框架,现在我们已经很少直接去管理线程,框架的内部都会为我们自动维护一个线程池.例如我们使用最多的okHttp以及他的封装框架Retrofit,线程封装框架RxJava和kotlin协程等等.为了更好地使用这些框架,则必须了解他的实现原理,而了解他的原理,线程池是永远绕不开的话题. 线程的创建与切换的成本是比较昂贵的.JVM的线程实现使用的是轻量级进程,也就是一个线程对应一个cpu核心.因此在创建与切换线程时,则会涉及到系统调用,是开销比较大的过程.为了解决这…
背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如下代码耗时统计进行压测:   long startTime = System.currentTimeMillis();  callRpc();   //这里比如调用RPC伪代码,当然还在插入数据库,中间件地方都加入统计  long costTime = (System.currentTimeMill…
摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得都不是很全面.因此就有了写ElasticSearch开发教程的想法,将学习到的技术经验分享出来,帮助更多需要的朋友,也希望借此认识同行的朋友,共同交流,共同进步! 系列文章的总括 下面将对即将推出的ElasticSearch开发系列连载教程做简单的说明.教程主要是面向有一定Java编程基础的朋友,不…
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化.尤其是它的"云优先,移动优先"的战略,这才是符合新时代潮流的大势. 今天,既然我们重点是来讨论Java与.NET领域的,那关于微软的是是非非且放置脑后.我说.NET看起来更新很快,目前只是在弥补曾经犯下的错. 那.NET之前究竟错在哪里..NET既然是微软实现跨平台与Java竞争的利器,那…
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:2673), pid=28610, tid=139813184919296  日志分析原因很简单,服务器的内存不够用,导致进程崩溃 JA…
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] args) { System.out.println("sleep .."); try { Thread.sleep(10000000); } catch (InterruptedException e) { e.printStackTrace(); } } }   java -Xmx10…
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个文件占用了内存太大了. 使用例子如下,用JAVA 运行Sort 1, 输入你要排序的文件路径 , 如 例子是对H:\下的文件和它所有子文件夹下的文件进行排序 2, 输入需要进行排序显示的最新大小,如 例子是对10M 大小 以上的文件进行排序 3,从大到小排序后按 文件路径\文件名-------大小…
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. 为了解决线程安全的问题,我们可以使用“同步”来控制线程访问.当一个线程在使用这个共享资源(不仅仅是变量,还可以是集合.对象等)的时候,其他线程就无法访问. package threadStudy; public class ThreadSynchronizedTest { public static…
1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target){} 示例: Thread thread1 = new Thread(new MyThread(), "mythread"); class MyThread extends Thread(){ public void run(){ System.out.println("My…
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发,快速实现,微软官方的各种封装,各种语法糖,使得c#在语义语法层面上更人性化,开发思路更专注于业务逻辑,对技术的实现并不需要关心的很细(当然这是指初级的入门程度),不过也带来的一些缺陷,当表面上的功夫不能满足的时候,.net程序员就不得不去了解微软封装起来的东西,所以我认识的.net程序员几乎人手一…
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求,而且也能怎么你在整个项目中的一个处理逻辑的能力体现.那么,你真的知道什么是高并发吗?这不是一个很简单的话题.高并发,往往会牵扯到很多的问题,如何才能快速响应,如何处理各个线程之间的交互,如何完成逻辑之间的高负载运转,甚至,一个系统,如果没有做好前期高并发的合理配置,整个产品会遇到瓶颈,以及不可预期的…
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作.这可能是在单线程程序中从来不会遇到的问题.其中的一些错误也未必会在单CPU机器上出现,因为两个线程从来不会得到真正的并行执行.然而,更现代的计算机伴随着多核CPU的出现,也就意味着不同的线程能被不同的CPU核得到真正意义的并行执行. 那么,要开始Java并发之路,就要开…
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实现(类):是集合接口的具体实现.从本质上讲,它们是可重复使用的数据结构. 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序.这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现. 集合接口 序号 name 接口描述 1 Collection Col…
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:…
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法有关系吗?有关系,在compareTo的返回为0时,它表示的是 进行比较的两个元素时相等的.equals是不是也应该对此作出相应的动作呢?我们看如下代码: class City implements Comparable<City> { private String code; private S…
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程.   进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间…
线程:线程是进程的组成部分,一个进程可以拥有多个线程,而一个线程必须拥有一个父进程.线程可以拥有自己的堆栈,自己的程序计数器和自己的局部变量,但不能拥有系统资源.它与父进程的其他线程共享该进程的所有资源. 线程的特点: 线程可以完成一定任务,可以和其它线程共享父进程的共享变量和部分环境,相互协作来完成任务. 线程是独立运行的,其不知道进程中是否还有其他线程存在. 线程的执行是抢占式的,也就是说,当前执行的线程随时可能被挂起,以便运行另一个线程. 一个线程可以创建或撤销另一个线程,一个进程中的多个…
前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs.yjmyzz.web.controller; import java.util.Date; public class App { boolean isRun = false; public App() { isRun = true; } public void start() { while (is…
java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式是要带着问题去学,并且解决问题. 在java中锁主要两类:内部锁synchronized和显示锁java.util.concurrent.locks.Lock.但细细想这貌似总结的也不太对.应该是由java内置的锁和concurrent实现的一系列锁. 为什么这说,因为在java中一切都是对象,而java对每…