本文共 4788 字,大约阅读时间需要 15 分钟。
package 夜光第二部分.案例3;import java.util.Arrays;import java.util.List;//lambda表达式 语法public class Demo8 { public static void main(String[] args) { //我们写一个主函数来调用一下 //下面就构建了一个长度为4的,元素有其中四个的集合 Listvalues = 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的,元素有其中四个的集合 Listvalues = Arrays.asList(10,20,30,40); //接下来,我们调用下 int res = new Demo9().add(values); System.out.println("夜光:计算的结果为" + res); // List
-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/