(观看网易云课堂---java300集大型视频做的笔记,都是里面的内容,整合了一下)
一、多线程
继承Thread,收到单继承的影响
常用Runnable接口,实现run()方法,不能抛出异常,没有返回值
实现Callable接口,重写call()方法,可以抛出异常,有返回值
join:合并两个线程;
eg:线程B{
线程A.join();//线程B等待A执行完在执行
}
yield:静态方法,暂停本线程(不是停止,仍有机会被cpu调度)
eg:线程A{ Thread.yield(); }//暂停本线程
sleep:静态方法,休眠一段时间,不释放锁。
1)用在与时间相关:倒计时;
2)模拟网络延迟;
public class CountDown {//倒计时
public static void main(String[] args) throws InterruptedException {
// TODO 自动生成的方法存根
Date endTime = new Date(System.currentTimeMillis() + 10*1000);//获取当前时间
long end = endTime.getTime();
while(true) {
System.out.println(new SimpleDateFormat("mm:ss").format(endTime));//按照特定格式打印时间
endTime = new Date(endTime.getTime() - 1000);//时间推后1秒
Thread.sleep(1000);//休眠10秒
if(end - 10000 > endTime.getTime()) {
break;
}
}
}
}
currentThread:静态方法。获取当前线程的引用;
setName():设置线程名称;
getName():返回线程名称;
isAlive():返回线程状态,true&false;
setPriority设置优先级,不是绝对的优先级,而是概率;
同步:(synchronize)
1.同步块:
synchronize(引用|this|类.class){}
2.同步方法:
(二)、网络编程
1.基础知识:
网络:将不同区域的计算机连接起来。
地址:IP地址,确定网络上一个绝对物理地址。
端口号:计算机内的虚拟概念,用来区分计算机内不同软件
资源定位:URL 统一资源定位器;URI 统一资源标识符
数据传输:TCP/IP协议,UDP协议;数据传输-数据封装与恢复
/**注:
*同一个协议下端口号不能重复,不同协议端口号可以重复
*1024以下的端口不使用(操作系统预留端口)
*
*TCP协议:类似打电话,面向连接,安全可靠,效率低下
*UDP协议:类似发短信,非面连接,效率高,不安全
*DNS:域名解析。将www.baidu.com/172.0.0.10这样的域名解析
*/
2.InetAddress·:封装IP及DNS
InetAddress addr = InetAddress.getLocalHost();//获得本地InetAddress对象
System.out.println(addr.getHostAddress());//获得IP地址
System.out.println(addr.getHostName());//获得域名
//根据域名获得InetAddress对象
addr = InetAddress.getByName("www.baidu.com");
System.out.println(addr.getHostAddress());//返回IP地址
System.out.println(addr.getHostName());//返回域名
//根据ip地址获得InetAddress对象
addr = InetAddress.getByName("111.13.100.91");
System.out.println(addr.getHostAddress());//返回IP地址
System.out.println(addr.getHostName());//为了安全性考虑,如果IP不存在或者DNS不解析,则返回自身
3.InetSocketAddress:封装端口
public static void main(String[] args) {
InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 9999);
//InetSocketAddress addr = new InetSocketAddress("localhost", 9999);
System.out.println(addr.getPort());//获得端口号
System.out.println(addr.getHostName());//获得域名
System.out.println(addr.getAddress());//获得IP地址
}
4.URL的组成:协议 域名 端口(http默认为80) 资源文件名
eg;http://www.baidu.com:80/course(资源基本上都是相对路径)
public static void main(String[] args) throws MalformedURLException {
// TODO 自动生成的方法存根
URL url = new URL("http://study.163.com:80/course/courseLearn.htm?courseId=343001#/learn/video?lessonId=1051635894&courseId=343001");
System.out.println("协议:" + url.getProtocol());
System.out.println("域名:" + url.getHost());
System.out.println("端口号:" + url.getPort());
System.out.println("资源:" + url.getFile());
System.out.println("相对路径:" + url.getPath());
System.out.println("锚点:" + url.getRef());//锚点后的参数会被当做锚点的一部分
System.out.println("参数:" + url.getQuery());
}