马士兵_JAVA视频教程-第09章_多线程
- 格式:doc
- 大小:1.29 MB
- 文档页数:13
Java多线程详解——⼀篇⽂章搞懂Java多线程⽬录1. 基本概念程序(program)程序是为完成特定任务、⽤某种语⾔编写的⼀组指令的集合。
即指⼀段静态的代码(还没有运⾏起来),静态对象。
进程(process)进程是程序的⼀次执⾏过程,也就是说程序运⾏起来了,加载到了内存中,并占⽤了cpu的资源。
这是⼀个动态的过程:有⾃⾝的产⽣、存在和消亡的过程,这也是进程的⽣命周期。
进程是系统资源分配的单位,系统在运⾏时会为每个进程分配不同的内存区域。
线程(thread)进程可进⼀步细化为线程,是⼀个程序内部的执⾏路径。
若⼀个进程同⼀时间并⾏执⾏多个线程,那么这个进程就是⽀持多线程的。
线程是cpu调度和执⾏的单位,每个线程拥有独⽴的运⾏栈和程序计数器(pc),线程切换的开销⼩。
⼀个进程中的多个线程共享相同的内存单元/内存地址空间——》他们从同⼀堆中分配对象,可以访问相同的变量和对象。
这就使得相乘间通信更简便、搞笑。
但索格线程操作共享的系统资源可能就会带来安全隐患(隐患为到底哪个线程操作这个数据,可能⼀个线程正在操作这个数据,有⼀个线程也来操作了这个数据v)。
配合JVM内存结构了解(只做了解即可)class⽂件会通过类加载器加载到内存空间。
其中内存区域中每个线程都会有虚拟机栈和程序计数器。
每个进程都会有⼀个⽅法区和堆,多个线程共享同⼀进程下的⽅法区和堆。
CPU单核和多核的理解单核的CPU是⼀种假的多线程,因为在⼀个时间单元内,也只能执⾏⼀个线程的任务。
同时间段内有多个线程需要CPU去运⾏时,CPU也只能交替去执⾏多个线程中的⼀个线程,但是由于其执⾏速度特别快,因此感觉不出来。
多核的CPU才能更好的发挥多线程的效率。
对于Java应⽤程序java.exe来讲,⾄少会存在三个线程:main()主线程,gc()垃圾回收线程,异常处理线程。
如过发⽣异常时会影响主线程。
Java线程的分类:⽤户线程和守护线程Java的gc()垃圾回收线程就是⼀个守护线程守护线程是⽤来服务⽤户线程的,通过在start()⽅法前调⽤thread.setDaemon(true)可以吧⼀个⽤户线程变成⼀个守护线程。
Cat.Javapublic class Cat {private static int sid = 0;private String name;int id;Cat(String name) { = name;id = sid++;}public void info(){System.out.println("My name is "+name+" No."+id);}public static void main(String arg[]){Cat.sid = 100;Cat mimi = new Cat("mimi");mimi.sid = 2000;Cat pipi = new Cat("pipi");();();}}Dog.javapublic class Dog {static int furColor;float height;float weight;void catchMouse(Mouse m) {//as;dfj;asdf//asdfj;asf//m.scream();}public static void main(String[] args) {//int i;System.out.println(furColor);Dog d = new Dog();Mouse m = new Mouse();d.catchMouse(m);HelloWorld hw = new HelloWorld();}}class Mouse {int height;}Count3Quit.javapublic class Count3Quit {public static void main(String[] args) {int[] a = new int[500];for(int i=0; i<a.length; i++) {a[i] = 1;}int leftCount = 500;int countNum = 0;int index = 0;while(leftCount != 1) {if(a[index] == 1) {countNum ++;if(countNum == 3) {countNum = 0;a[index] = 0;leftCount --;}}index ++;if(index == a.length) {index = 0;}}for(int i=0; i<a.length; i++) {if(a[i] == 1) {System.out.println(i);}}}}- 1 -Fab.javapublic class Fab {public static void main(String[] args) {System.out.println(f(-9));}public static long f(int index) {if(index < 1) {System.out.println("invalid parameter!");return -1;}if(index == 1 || index == 2) {return 1;}long f1 = 1L;long f2 = 1L;long f = 0;for(int i=0; i<index-2; i++) {f = f1 + f2;f1 = f2;f2 = f;}return f;}}HelloWorld.javapublic class HelloWorld {static int j = 9;public static void main(String[] asdfasf) { //a;sldfkja;sdjf;asjdf;asjdfSystem.out.println("HW");System.out.println(123);System.out.println(j);int i = 8;}public static void m() {}}class TT {}ListFile.javaimport java.io.*;public class ListFile {public static void main(String[] args) {File f = new File("d:\\test");/*File[] files = f.listFiles();for(File ff : files) {System.out.println(ff.getName());}*/listChilds(f, 0);}public static void listChilds(File f, int level) {String preStr = "";for(int i=0; i<level; i++) { preStr += ""; }System.out.println(preStr + f.getName());if(!f.isDirectory()) return;File[] childs = f.listFiles();for(int i=0; i<childs.length; i++) {listChilds(childs[i], level + 1);}}}MySearch.javapublic class MySearch {public class main(String[] args) {int a[] = {2, 5, 99, 4, 6, 8, 7, 24, 12};int m = 6;for(int i=0; i<a.length; i++) {if(a[i] == m) {System.out.println(i);}}}}- 2 -OddSum.javapublic class OddSum {public static void main(String[] args) {long result = 0;for(int i=1; i<=99; i+=2) {result += i;}System.out.println("result=" + result);}}Point3D.javapublic class Point3D {double x, y, z;public Point3D(double _x, double _y, double _z) { x = _x;y = _y;z = _z;}public void setX(double _x) {x = _x;}public double distance() {return x*x + y*y + z*z;}public static void main(String[] args) {Point3D p = new Point3D(1.2, 3.4, 5.8);p.setX(1.3);System.out.println(p.distance());}}TestAccess.javaT.javapublic class T {int i;void m(int i) {this.i = i;}void m(short i) {System.out.println("short");}public static void main(String[] args) {this.i = 8;T t = new T();t.m(5);}}TestBreak.javapublic class TestBreak {public static void main(String args[]) {int stop = 4;for (int i = 1; i <= 10; i++) {//当i等于stop时,退出循环if (i == stop) {;}break;System.out.println(" i= " + i);}}}- 3 -TestCircle.javaclass Point {private double x;private double y;Point(double x1, double y1) {x = x1;y = y1;}public double getX() { return x; }public double getY() { return y; }public void setX(double i) { x = i; }public void setY(double i) { y = i; }}class Circle {private Point o;private double radius;Circle(Point p, double r) {o = p;radius = r;}Circle(double r) {o = new Point(0.0, 0.0);radius = r;}boolean contains(Point p) {double x = p.getX() - o.getX();double y = p.getY() - o.getY();if(x*x + y*y > radius * radius) return false;else return true;}public void setO(double x, double y) {o.setX(x);o.setY(y);}public Point getO() { return o; }public double getRadius() { return radius;}public void setRadius(double r) { radius = r;}public double area() {return 3.14 * radius * radius;}}public class TestCircle {public static void main(String args[]) {Circle c1 = new Circle(new Point(1.0,2.0), 2.0);Circle c2 = new Circle(5.0);System.out.println("c1:("+c1.getO().getX()+","+c1.getO().getY()+"),"+c1.getRadius());System.out.println("c2:("+c2.getO().getX()+","+c2.getO().getY()+"),"+c2.getRadius());System.out.println("c1 area = "+c1.area());System.out.println("c1 area = "+c2.area());c1.setO(5,6);c2.setRadius(9.0);System.out.println("c1:("+c1.getO().getX()+","+c1.getO().getY()+"),"+c1.getRadius());System.out.println("c2:("+c2.getO().getX()+","+c2.getO().getY()+"),"+c2.getRadius());System.out.println("c1 area = "+c1.area());System.out.println("c1 area = "+c2.area());Point p1 = new Point(5.2, 6.3);System.out.println(c1.contains(p1));System.out.println(c1.contains(newPoint(10.0,9.0)));}}- 4 -TestConstruct.javaclass Person2 {private String name;private String location;Person2(String name) { = name;location = "beijing";}Person2(String name,String location) { = name;this.location = location;}public String info() {return"name: "+name+" location: "+location;}}class Teacher extends Person2 {private String capital;Teacher(String name, String capital) {this(name, "beijing", capital);}Teacher(String name, String location, String capital) {super(name, location);this.capital = capital;}public String info() {return () + "capital: " + capital;}}public class TestConstruct {public static void main(String[] args) {Teacher t = new Teacher("B", "GG");System.out.println(());}}TestConvert2.javapublic class TestConvert2 {public static void main(String[] args) {int i=1,j=12;float f1=(float)0.1; //0.1ffloat f2=123;long l1 = 12345678,l2=8888888888L;double d1 = 2e20,d2=124;byte b1 = 1,b2 = 2,b3 = 127;j = j+10;i = i/10;i = (int)(i*0.1);char c1='a',c2=125;byte b = (byte)(b1-b2);char c = (char)(c1+c2-1);float f3 = f1+f2;float f4 = (float)(f1+f2*0.1);double d = d1*i+j;float f = (float)(d1*5+d2);}}TestConvert.javapublic class TestConvert {public static void main(String arg[]) {int i1 = 123;int i2 = 456;double d1 = (i1+i2)*1.2;//系统将转换为double型运算float f1 = (float)((i1+i2)*1.2);//需要加强制转换符byte b1 = 67;byte b2 = 89;byte b3 = (byte)(b1+b2);//系统将转换为int 型运算,需要强制转换符System.out.println(b3);double d2 = 1e200;float f2 = (float)d2;//会产生溢出System.out.println(f2);float f3 = 1.23f;//必须加flong l1 = 123;long l2 = 30000000000L;//必须加lfloat f = l1+l2+f3;//系统将转换为float型计算long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)}}TestDigitCount.javapublic class TestDigitCount {public static void main(String[] args) {int i = 34789;- 5 -double d = 3478.9765;digitCount2(String.valueOf(i));digitCount2(String.valueOf(d));}public static void digitCount(String s) {int index = s.indexOf(".");if(index == -1) {System.out.println(s.length());} else {System.out.println("整数:" + index + "\n" + "小数:" + (s.length() - index - 1));}}public static void digitCount2(String s) {String s1 = s.replace('.', ',');String[] ss = s1.split(",");if(ss.length == 1) {System.out.println(s1.length());} else if(ss.length == 2) {System.out.println("整数:" + ss[0].length() + "\n" + "小数:" + ss[1].length());} else {System.out.println("Format Error!");}}}TestEqual.javapublic class TestEqual {public static void main(String[] args) {Integer i1 = new Integer(1);Integer i2 = new Integer(1);System.out.println(i1 == i2);System.out.println(i1.equals(i2));Mao m1 = new Mao("A", "A");Mao m2 = new Mao("A", "A");System.out.println(m1 == m2);System.out.println(m1.equals(m2));}}class Mao {String name;String color;Mao(String n,String c){name = n; color = c;}public boolean equals(Object obj) {return true;}}TestFormat.javapublic class TestFormat {public static viod main(String[] args) {System.out.println("ok");System.out.println("hello");int i = 8 + 9;for(int i=0; i<10; i++) {System.out.println(i);System.out.println(i);}}public void m() {System.out.println("ok");}public void m2() {System.out.println("ok");}public void m3() {System.out.println("ok");}public void m4() {}}- 6 -TestIF.javapublic class TestIF {public static void main(String[] args) {int i = 20;if(i < 20) {System.out.println("<20");System.out.println("<20");} else if (i < 40) {System.out.println("<40");} else if (i < 60) {System.out.println("<60");} elseSystem.out.println(">=60");System.out.println(">=60");}}TestInherit.javaclass FatherClass {public int value;public void f(){value = 100;System.out.println("FatherClass.value="+value);}}class ChildClass extends FatherClass {public int value;public void f() {super.f();value = 200;System.out.println("ChildClass.value="+value);System.out.println(value);System.out.println(super.value);}}public class TestInherit {public static void main(String[] args) {ChildClass cc = new ChildClass();cc.f();}}TestInterface.java public class TestInterface {PetCarer pc = new Worker();pc.feed();}interface PetCarer {void feed();void playWithPet();}class Worker implements PetCarer {public void feed() {System.out.println("Worker feed ... ");}void playWithPet() {System.out.println("Worker play with pet ... ");}}TestMethod2.javapublic class TestMethod2 {public int Max(int a, int b) {return a > b ? a : b;}public int Min(int a, int b) {return a < b ? a : b;}public static void main(String[] args) {TestMethod2 t = new TestMethod2();System.out.println("Max = "+t.Max(3,4));System.out.println("Min = "+t.Min(3,4));//System.out.println(Max(3, 4));}}- 7 -TestMethod.javapublic class TestMethod {public static void main(String[] args) {m();m2(2);m3('3', 4);m4(4, 6);int i = m4(4, 6);System.out.println(i);}public static void m() {//return;System.out.println("ok");System.out.println("hello");}public static void m2(int i) {if(i > 3)return;System.out.println(i);}public static void m3(int i, int j) {System.out.println(i + j);}public static int m4(int i, int j) {return i > j ? i : j;}}TestMetrics.javapublic class TestMetrics {public static void main(String args[]) {int[][] m = {{1,2,3},{2,3,4},{4,5,6}};int[][] n = {{3,4,5},{5,6,7}};int[][] mn = new int[3][];for(int i = 0; i<m.length;i++) {mn[i] = new int[n[0].length];}for (int i = 0; i < m.length; i++) {for (int j = 0; j < n[0].length; j++) {for (int k = 0; k < n.length; k++) {mn[i][j] += m[i][k] * n[k][j];}}}for(int i = 0; i<mn.length;i++){for(int j =0;j<mn[i].length;j++){System.out.print(mn[i][j]);if(j<mn[i].length-1)System.out.print(",");}System.out.println();}}}TestOverLoad.javapublic class TestOverLoad {public static void main(String[] args) {Person p = new Person();Person p1 = new Person(400);Person p2 = new Person(2, 500);();("ok");}}class Person {Person() {id = 0;age = 20;}Person(int _id) {id = _id;age = 23;}Person(int _id, int _age) {id = _id;age = _age;}//成员变量定义private int id;private int age = 20;//方法定义public int getAge() {return age;}public void setAge(int i) {age = i;}public int getId() {return id;}void info() {System.out.println("my id is : " + id);}- 8 -void info(String t) {System.out.println(t + " id " + id);}}TestPack.java import com.bjsxt.java140.Cat;public class TestPack {public static void main(String[] args) { Cat c = new Cat();}}TestPerson.java class Person {private String name;private int age;public void setName(String name) {=name;}public void setAge(int age) {this.age=age;}public String getName(){return name;}public int getAge(){return age;}}class Student extends Person {private String school;public String getSchool() {return school;}public void setSchool(String school) { this.school =school;}}public class Test {public static void main(String arg[]){Student student = new Student();student.setName("John");student.setAge(18);student.setSchool("SCH");System.out.println(student.getName());System.out.println(student.getAge());System.out.println(student.getSchool());}}TestPrimitive.javapublic class TestPrimitive {public static void main(String[] args) {Integer i = new Integer(100);Double d = new Double("123.456");int j = i.intValue()+d.intValue();float f = i.floatValue()+d.floatValue();System.out.println(j); System.out.println(f);double pi = Double.parseDouble("3.1415926");double r = Double.valueOf("2.0").doubleValue();double s = pi*r*r;System.out.println(s);try {int k = Integer.parseInt("1.25");} catch (NumberFormatException e) {System.out.println("数据格式不对!");}System.out.println(Integer.toBinaryString(123)+"B");System.out.println(Integer.toHexString(123)+"H");System.out.println(Integer.toOctalString(123)+"O");}}- 9 -TestStatic.javapublic class TestStatic {static int i = 0;public static void main(String[] args) {i = 8;//T t = new T();//T.this.i = 9;}}class TT {int i = 8;void m() {TestStatic ts = new TestStatic();System.out.println(TestStatic.i);System.out.println(ts.i);}}TestStringCase.javapublic class TestStringCase {public static void main(String[] args) { String s = "ABAabb$&^$#BAAb898B#@%aa";int cU = 0, cL = 0, cO = 0;for(int i=0; i<s.length(); i++) {char c = s.charAt(i);if(c >= 'A' && c <= 'Z') {cU ++;} else if( c >= 'a' && c <='z') {cL ++;} else {cO ++;}}System.out.println("大写:" + cU);System.out.println("小写:" + cL);System.out.println("其他:" + cO);}}TestSubstr.javapublic class TestSubstr {public static void main(String[] args) {String s = "Welcome to Java World!";String s1 = s.substring(11, 14);System.out.println(s1);}}TestSuperSub.javaclass SuperClass {private int n;/*SuperClass() {System.out.println("SuperClass()");}*/SuperClass(int n) {System.out.println("SuperClass(" + n + ")");this.n = n;}}class SubClass extends SuperClass {private int n;SubClass(int n) {//super();System.out.println("SubClass(" + n + ")");this.n = n;}SubClass() {super(300);System.out.println("SubClass()");}}public class TestSuperSub {public static void main(String arg[]) {//SubClass sc1 = new SubClass();SubClass sc2 = new SubClass(400);}}TestSwitch.javapublic class TestSwitch {public static void main(String[] args) {int i = 8;- 10 -switch(i) {case 8 :case 3 :case 2 :System.out.println("C");break;case 9 :System.out.println("D");break;default:System.out.println("error");}}}TestToString.javapublic class TestToString {public static void main(String[] args) {}}classTestVar2.javapublic class TestVar2 {public static void main(String[] args) {boolean b = true;int x, y = 9;double d = 3.1415;char c1, c2;c1 = '\u534e';c2 = 'c';x = 12;System.out.println("b=" + b);System.out.println("x=" + x + ",y=" + y);System.out.println("d=" + d);System.out.println("c1=" + c1);System.out.println("c2=" + c2);}}TestUtilDate.javaimport java.util.Date;public class TestUtilDate {public static void main(String[] args){Date date = new Date();System.out.println(date);String temp = date.toString();String t = temp.substring(11,temp.indexOf('C'));t = t.trim();System.out.println(t);String[] time = t.split(":");if(time.length==3){String s1 = null;String s2 = null;String s3 = null;if(time[0].charAt(0) == '0') {s1 = time[0].substring(1);} else {s1 = time[0];}if(time[1].charAt(0) == '0') {s2 = time[1].substring(1);} else {s2 = time[1];}if(time[2].charAt(0) == '0') {s3 = time[2].substring(1);} else {s3 = time[2];}System.out.println("现在是"+ s1 +"点"+ Integer.parseInt(time[1]) +"分"+ s3 +"秒");}}}- 11 -TestVar.javapublic class TestVar {static int j;public void m() {int i = 0;System.out.println(i);}public static void main(String[] args) {int i = 0;System.out.println(i);System.out.println(j);boolean b = false;if(b) {int c = 0;System.out.println("b is true");}//System.out.println(c);long longNum1 = 8888888888888L;}}TestWhile.javapublic class TestWhile {public static void main(String[] args) {int i = 0;while(i < 10) {System.out.println(i);i++;}i = 0;do {i++;System.out.println(i);} while(i < 10);}}- 12 -。
尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。
中文名: 尚学堂科技.马士兵.JAVA视频教程(java培训内部视频)10年2月9日更新(更新Spring3.0)英文名: java video courses发行日期:地区: 大陆对白语言: 普通话简介:下载地址:/forum.php?mod=viewthread&tid=1832&extra=page%3D1====================================================== ============================================================ ===================2007年10月29日更新- 加入> - 视频代码的讲解请大家务必首先阅读《00_Shopping视频说明》,其中讲明了如何来阅读剩下的视频![声明:]这段视频是从尚学堂科技的教学课堂上实战录制,版权归尚学堂科技和马士兵老师共有,任何人不能用此教程牟利,违者必究。
====================================================== ======但是:在不收取其他人费用的前提下,您可以自由的分发此视频教程====================================================== ======[须知:]这些视频是以前公布的多个项目为基础的,在《00_Shopping视频说明》中有所说明,没有基础的同学应该首先阅之前的视频教程。
在此教程中,因为采用共享桌面,所以老师会经常说:“看我的桌面”,希望大家不要觉得惊奇或烦躁。
[其他文件:]在此目录下还有一个目录是[source],里面装有整个教学项目的源代码,建议大家在动手操作的过程中参考。
在此目录下还有一个[camplay.exe]文件,是观看视频所用的播放器,大家可以直接把视频文件(avi文件)直接拖放到上面进行观看。
尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。
第九章Java多线程机制每个进程都有独立的代码和数据空间,进程间的切换会有很大开销。
线程可以看成轻量级的进程同一类线程共享代码和数据空间,每个线程有独立的运行栈个程序计数器,线程切换开销小。
多线程:在操作系统中能同时运行多个任务(程序)。
多线程:在同一个应用程序中有多个顺序流同时执行。
二、说明:Runnable接口ng.Runnable–Java多线程机制的一个重要部分,实际上它只有一个run()方法–Thread类实现了Runnable接口,相对于Thread类,它更适合于多个线程处理同一资源–实现Runnable接口的类的对象可以用来创建线程,这时start方法启动此线程就会在此线程上运行run()方法–在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程Thread类ng.Thread–在Java程序中创建多线程的方法之一是继承Thread类–封装了Java程序中一个线程对象需要拥有的属性和方法–从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。
这个子类应该重写Thread 类的run方法,在run方法中写入需要在新线程中执行的语句段。
这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。
原线程将同时继续往下执行–Thread类直接继承了Object类,并实现了Runnable接口。
它位于ng包中,因而程序开头不用import 任何包就可直接使用例子:Thread\TestThread1.java 开始使用Eclipse2 一般程序先执行子线程,再执行主线程(方法调用)package Thread;public class TestThread1_1 {public static void main(String args[]) {Runner1 r = new Runner1();r.run();for(int i=0; i<100; i++) {System.out.println("Main Thread:------" + i);}}}class Runner1 implements Runnable {public void run() {for(int i=0; i<100; i++) {System.out.println("Runner1 :" + i);}}}3继承Thread类(继承,不常用)package Thread;public class TestThread1_2{public static void main(String arg[]){Runner1_2 r = new Runner1_2();r.start();for (int i = 0 ;i <= 100; i++){System.out.println("Main Thread:!!!!"+i);}}}class Runner1_2 extends Thread{public void run(){for (int i = 0 ;i <= 100; i++){System.out.println("Runner2:!!!!"+i);}}}2010-4-2 21:04:16 – 2010-4-14 16:28:59三、线程状态转换四、线程控制基本方法Sleep/Join/Yield方法Sleep/Join(需要捕获异常)例子1 Thread/TestInterrupt.Java (线程结束的方式)package Thread;import java.util.*;public class TestInterrupt {public static void main(String arg[]){MyThread thread = new MyThread();thread.start();try{Thread.sleep(10000);}//主线程睡眠…catch(InterruptedException e){}thread.interrupt();//中断线程。
}}class MyThread extends Thread{boolean flag = true;public void run(){//重写的方法不能抛出不必被重写方法不同的方法,此处不能写throws InterruptedExceptionwhile(flag){System.out.println("----"+ new Date()+"----");try{sleep(1000);}catch(InterruptedException e){//捕获抛出的异常return;//停止}}}}例子2 Thread/TestJoin.Java (线程合并方式)package Thread;public class TestJoin {public static void main(String[] args) {MyThread2 t1 = new MyThread2("abcde");t1.start();//启动分支线程try {t1.join();//把T1分支线程合并到当前线程} catch (InterruptedException e) {}for(int i=1;i<=10;i++){System.out.println("i am main thread");}}}class MyThread2 extends Thread {MyThread2(String s){super(s);}public void run(){for(int i =1;i<=10;i++){System.out.println("i am "+getName());try {sleep(1000);} catch (InterruptedException e) {return;}}}}例子3 Thread/TestYield.Java (让出Cup)package Thread;public class TestYield {public static void main(String[] args) {MyThread3 t1 = new MyThread3("t1");MyThread3 t2 = new MyThread3("t2");t1.start(); t2.start();}}class MyThread3 extends Thread {MyThread3(String s){super(s);}public void run(){for(int i =1;i<=100;i++){System.out.println(getName()+": "+i);if(i%10==0){yield();}}}}五、线程优先级Priority例子Thread/TestPriority.Javapackage Thread;public class TestPriority {public static void main(String[] args) {Thread t1 = new Thread(new T1());Thread t2 = new Thread(new T2());t1.setPriority(Thread.NORM_PRIORITY + 3);//提高优先级t1.start();t2.start();}}class T1 implements Runnable {public void run() {for(int i=0; i<1000; i++) {System.out.println("T1: " + i);}}}class T2 implements Runnable {public void run() {for(int i=0; i<1000; i++) {System.out.println("------T2: " + i);}}}2010年4月14日21:40:41 – 2010-4-15 16:23:44六、例子TestThread2-6TestThread2一个线程类可以启动两个线程package Thread;public class TestThread2 {//一个线程类可以启动两个线程public static void main(String args[]) {Runner2 r = new Runner2();Thread t1 = new Thread(r);Thread t2 = new Thread(r);t1.start();t2.start();}}class Runner2 implements Runnable {public void run() {for(int i=0; i<30; i++) {System.out.println("No. " + i);}}}package Thread;public class TestThread6 {public static void main(String args[]){Thread t = new Runner6();t.start();for(int i=0; i<50; i++) {System.out.println("MainThread: " + i);}}}class Runner6 extends Thread {public void run() {System.out.println(Thread.currentThread().isAlive());for(int i=0;i<50;i++) {System.out.println("SubThread: " + i);}}}七、线程同步引入:两人同时取同一账户的钱两个线程访问同一资源,进程之间协调的问题解决:在进程访问独占资源时先锁定再访问synchronized 最好只锁定一个对象package Thread;public class TestSync implements Runnable {Timer timer = new Timer();public static void main(String[] args) {TestSync test = new TestSync();Thread t1 = new Thread(test);Thread t2 = new Thread(test);t1.setName("t1");t2.setName("t2");t1.start();t2.start();}public void run(){timer.add(Thread.currentThread().getName());//拿到当前线程的名字 }}class Timer{private static int num = 0;public void add(String name){//public synchronized void add(String name){ //synchronized "锁定"关键字 //synchronized (this) {//锁定num ++;try {Thread.sleep (1);} //让线程睡眠,给另一个线程执行的机会,更容易看到xia catch (InterruptedException e) {}System.out .println(name+", 你是第"+num +"个使用timer 的线程");//}}}t2, 你是第2个使用timer 的线程t1, 你是第2个使用timer 的线程问题出现在线程执行方法时被另一个线程打断了.死锁07_线程同步_3.aviThread/TestDeadLock.java两个线程锁定了互斥的对象package Thread;//一个线程类模拟两个线程。