IT十八掌掌第八天课程总结

今天学完IT十八掌第八天java基础课程:

学习内容:

复习jar命令

---------------

[将类路径下的类打成jar文件]

jar cvf myjar.jar -C classes/ .

jar cvfe myjar.jar a.a1.a11.a111.A -C classes/ .        //e指定的入口点.

[使用java -jar参数来运行程序]

java -jar myjar.jar                            //执行jar文件

java -jar myjar.jar    a.a1.a11.a111.A            //执行jar文件指定入口点。

进程

-----------------

进程之间内存式隔离的。内存不共享。

eg:扫雷,qq

线程

-----------------

程序执行过程中,并发执行的代码段。

线程之间可以共享内存。

Thread : 线程类。

start()        //通知cpu,可以开始执行该线程。

run()        //线程具体执行的代码段。

Thread t = new Thread();

t.start();

Thread.currentThread()        //得到当前的执行线程。

yield()                        //让线程放弃cpu的抢占权。

join()                        //等待当前进程完成,

sleep(int mils)                //让当前线程休眠指定的毫秒数.

线程安全:增加了同步处理。确保在同一时刻,只有一个线程执行同步代码。

同步方法使用的当前对象作为同步对象。

静态方法可以加同步处理,使用Class作为同步对象。

KTV :

Box :        //3

Waiter        //守护线程 daemon  Thread.setDaemon(true);

yield()

join()

sleep(int ms);

setDaemon(true);    //线程启动前设置

isDaemon();            //指定线程是否是守护线程

start();            //启动线程

run();                //

notify()            //选择一个监控器对象等待队列中的线程进行通知。

notifyAll()            //选择所有监控器对象等待队列中的线程进行通知。

wait()                //将当前线程放入监控器的等待队列中。

wait(int n )        //线程进入到等待队列后,最多等待n长时间,时间一旦,自动唤醒。

生产者 + 消费者问题

------------------------

List list = new ArrayList(); //数组列表

List<Integer> list = new ArrayList<Integer>();    //使用泛型,创建一个整数数组列表

遇到的问题:

  1,多线程的生产消费问题。

        |---两个线程操作同一个资源,首先需要保证操作资源时同步(synchronized),其次应该保证资源存             取和取出是有意义的。也就是线程之间通信正常(notify,wait)。还有就是注意死锁。

  2,集合List以及泛型使用。

|---将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。

元素是有序的,元素可以重复,因为该集合体系有索引。

  3,多线程中的死锁问题,什么时候该使用yield(),notify,notifyAll,wait()

        死锁是进程死锁的简称, 产生死锁的原因有两个

             一种原因是系统提供的资源太少了,远不能满足并发进程对资源的需求。

            另一种原因是由于进程推进顺序不合适引发的死锁。

需要帮助的问题

        1,生产消费问题

        2,死锁

        3,集合

时间: 2024-10-09 10:27:28

IT十八掌掌第八天课程总结的相关文章

IT十八掌掌第十二天课程总结

今天学完IT十八掌第十二天java基础课程: 学习内容: HashMap和HashTable底层都是采用数组+链表实现的. 结合了数组的寻址快,链表增删快的特点.使用散列算法(hash算法)将元素分配到数组的元素当中, hash分区默认16个,每个分区内存储的是链表 1,算出hashcode,进行&0xof取出后四位初步比较,确定分区 2,然后拿对象和链表中每个对象相比较,比较每个对象的hash码是否相同. 1. 判断hashcode是否相同 2.判断是否同一对象或者equals返回true 所

IT十八掌掌第一天课程总结

今天学完IT十八掌第一天java基础课程: 学习内容: 1,计算机基础以及windows快捷键及常见设置 |---Dos快捷键 1.dir : directory 2.d: 切换盘符. 3.tab : 补全按键 shift + tab : 反向操作. 4.cd : 进入目录 5.mkdir :mkd /make directory 创建目录 6. 目录 .. : 上级目录 . : 当前目录 7.复制 cp copy 8:del : 删除文件 del a.txt // -s :递归 // -q :

IT十八掌掌第九天课程总结

今天学完IT十八掌第九天java基础课程: 学习内容: 创建线程方式 ----------------- 1.Thread class Demo extends Thread { public void run() { } } 2.Runnable{public void run();} class Man extends Person implements Runnable{ public void run(){ ... } } new Car().start(); new Thread(ne

IT十八掌掌六天课程总结

今天学完IT十八掌第六天java基础课程: 学习内容: 1,接口与抽象类: interface ---------------------------------------------- 1,所有方法都是抽象的 2,属性有public static final修饰,这是默认的,也就是说接口属性是静态常量. 3,接口之间可以多重继承, 4,接口之间是继承关系 5,类和接口之间是实现关系. 6,面向接口编程降低耦合度 抽象类 ------------------------------------

十八掌第三天课程总结

学习内容 数组的形式,数组的内部存储结构 选择排序,冒泡排序,折半查找 课后作业 1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];//前提条件是正方的. 7.遍历三维组数,横向输出三维数组的每一个层. 8.定义一个类:Dog 有名称 color age cry(); 9.阐述出来

IT十八掌掌第七天课程总结

今天学完IT十八掌第七天java基础课程: 学习内容: 1,复习多态,抽象类与接口异同,适配器模式 2,匿名内部类 new InterfaceDemo(){具体方法实现 }; 3,异常 -------------------------------- Throwable |---Error |---Exception 举例:RuntimeException运行时异常 getMessage() toString()方法 printStackTrace() 打印栈跟踪信息; 举例: throws  

IT十八掌掌第四天课程总结

今天学完IT十八掌第四天java基础课程: 学习内容: java基本数据类型: ----------------------- byte    :    一个字节,-128 ~ 127  = 256 short    :    两个字节, -32768 ~ 32767 int        :    四个字节, long    :    八个字节, float    :    4字节 double    :    8字节 boolean    :    1个字节 char    :    2个字

IT十八掌掌第五天课程总结

今天学完IT十八掌第五天java基础课程: 学习内容: 1,jvm栈空间设置 堆空间设置:    java -Xmx<size> java -Xms<size> 栈空间设置: java -Xss<size> 死循环不会导致栈溢出,因为在不断的压栈,弹栈 方法不断迭代会导致栈溢出,不断的在压栈(方法帧) 2,继承 构造函数: 为什么没有返回值. 因为构造函数就是为了返回对象的,固定了,所以没必要定义返回值类型. 代码块 ----------------------- 构造

IT十八掌掌第十三天课程总结

今天学完IT十八掌第十三天java基础课程: 学习内容: HashMap HashSet entrySet() |--getKey( ) |--getValue( ) keySet() |--get(Key) ---------- 有无缓冲区性能评测 缓冲区的原理是先将字符写入数组,然后在批量写入文件,避免对物理文件的频繁访问,提高效率. 行分割符在java中可以通过方法得到. 系统属性名是line.separator. 不同平台的行分隔符是不同的. windows7:\r\n macOS