博客
关于我
夜光带你走进 Java 成神之路(三十九)擅长的领域
阅读量:317 次
发布时间:2019-03-01

本文共 4788 字,大约阅读时间需要 15 分钟。

夜光序言:

 

曾经为了一个人倾心过,后来才发现那样不值得;有时候,不得不心狠一点,这样自己才会快乐一点;不需要给自己找很多的麻烦,也许对方并不需要你的关心。

 

 

 

 

 

 

 

 

 

 

 

正文:

                           以道御术 / 以术识道

 

 

package 夜光第二部分.案例3;import java.util.Arrays;import java.util.List;//lambda表达式  语法public class Demo8 {    public static void main(String[] args) {        //我们写一个主函数来调用一下        //下面就构建了一个长度为4的,元素有其中四个的集合        List
values = Arrays.asList(10,20,30,40); //接下来,我们调用下 int res = new Demo8().add(values); System.out.println("夜光:计算的结果为" + res); } public int add(List
values){ //迭代出来的元素a 等于 a //再通过一个sum方法即可 return values.parallelStream().mapToInt(a -> a).sum(); //并发的 }}

 

 

代码更加优化了嗯

 

package 夜光第二部分.案例3;import java.util.ArrayList;import java.util.Arrays;import java.util.List;//lambda表达式  语法public class Demo9 {    public static void main(String[] args) {        //我们写一个主函数来调用一下        //下面就构建了一个长度为4的,元素有其中四个的集合        List
values = Arrays.asList(10,20,30,40); //接下来,我们调用下 int res = new Demo9().add(values); System.out.println("夜光:计算的结果为" + res); // List
l = new ArrayList<>();// for (Integer i : values){ //很强大,可以把类型给猜出来//// } } public int add(List
values){ //迭代出来的元素a 等于 a //再通过一个sum方法即可// return values.parallelStream().mapToInt(a -> a).sum(); //并发的 values.parallelStream().forEachOrdered(System.out :: println); //println方法 return values.parallelStream().mapToInt(i -> i*2).sum(); }}

 

-DarchetypeCatalog=internal

 

 


 

 

可以用常量

package Java字节码角度看线程安全问题;//夜光public class Sequence {    private int value;    public int getNext(){        return value++;    }    public static void main(String[] args) {        //我们调用的时候//        new Sequence().getNext();        Sequence s = new Sequence();        while(true){ //多次调用            System.out.println(s.getNext());        }    }}

 

 

 

 

package Java字节码角度看线程安全问题;//夜光public class Sequence {    private int value;    public int getNext(){        return value++;    }    public static void main(String[] args) {        //我们调用的时候//        new Sequence().getNext();        //1. 下面这种方式面对多线程,会出现不可预期的问题//        Sequence s = new Sequence();//        while(true){ //多次调用//            System.out.println(s.getNext());//        }        //2. 我们看看下面这种方式        Sequence s = new Sequence();        new Thread(new Runnable() {            @Override            public void run() {                //下面,我们不停地去调用生成器                while (true){                    System.out.println(Thread.currentThread().getName()                    +""+s.getNext());                    try {                        Thread.sleep(1000);  //休息一会儿                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }).start();        //然后,我们重写多个        //嗯唔        //第二个线程        new Thread(new Runnable() {            @Override            public void run() {                //下面,我们不停地去调用生成器                while (true){                    System.out.println(Thread.currentThread().getName()                            +""+s.getNext());                    try {                        Thread.sleep(1000);  //休息一会儿                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }).start();        //第三个线程        new Thread(new Runnable() {            @Override            public void run() {                //下面,我们不停地去调用生成器                while (true){                    System.out.println(Thread.currentThread().getName()                            +""+s.getNext());                    try {                        Thread.sleep(1000);  //休息一会儿                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }).start();    }}

 

上面这种方式会出现线程安全问题

 

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;//夜光@WebServlet(name = "Hello")public class Hello extends HttpServlet {    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //设置响应内容类型        response.setContentType("text/html");        //设置逻辑实现        PrintWriter out = response.getWriter();        out.println("

Servlet后台

"); }}
Hello
Hello
Hello
/Hello

 

 

 

 

 

 

转载地址:http://fzbo.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(5)——MySql常用函数大全讲解
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
查看>>
Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
查看>>