Java 总结 1202/1203

多线程:
线程依赖于进程存在,相当于进程里的一个小程序
多线程的意义:
一个进程里开启了多个线程,每个线程都在抢占cpu的执行权
多线程抢占cpu执行权的特点:
具有随机性
多线程: 一个程序的执行路径有多条
单线程: 一个程序的执行路径只有一条
面试题: Java虚拟机是多线程吗?
是,Java虚拟机自带一个垃圾回收器,来确保内存不会轻易的溢出
至少开启两个线程:
当程序执行代码的时候会开启main 主线程
垃圾回收器开启一个垃圾回收线程,将不用的变量或者没有更多引用的对象回收掉
如何实现多线程程序?
实现多线程程序就要创建一个进程,创建进程需要调用系统资源,但是Java语言不能直接调用系统资源
C/C++可以,Java通过调用C/C++已经封装好的东西
Java类: Thread
并发和并行:  并发指一个时间点,并行指一个时间段
Thread类中的一些方法:
public final String getName()返回该线程的名称。
public final void setName(String name)改变线程名称,使之与参数 name 相同。
public final void join()
                throws InterruptedException等待该线程终止。 必须要先启动该线程
public final int getPriority()返回线程的优先级。
public final void getPriority(int p) 设置线程的优先级
默认值是5 1-10  10最大  优先级最大不代表一定能抢到cpu的执行权 因为线程抢占cpu执行权具有随机性
public static void yield()暂停当前正在执行的线程对象,并执行其他线程。
暂停当前线程执行其他线程,并不保证另一个线程就一定能抢占到CPU的执行权
public final void setDaemon(boolean on)  on指定true,就是设置守护线程...
将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。 
该方法必须在启动线程前调用。
jvm自动退出,对于主线程的数据如果直接输出完毕,对于两个守护线程来说不会立即消失,Jvm等会就自动退出.
public static void sleep(long millis)
                  throws InterruptedException在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
public final void stop():强迫线程停止执行
public void interrupt()中断线程。 表示中断线程一种状态

多线程的实现方式1:
1) 创建一个自定义类,继承Thread类
2) 重写自定义类中的run()方法
3) 在主程序中,创建自定义的类的对象,通过star()方法启动它

多线程的实现方式2:
1) 自定义类,该类实现Runnable接口
2) 实现接口中的run()方法
3  在主程序中,创建该类对象的实例
4) 再创建Thread类的对象,将步骤3中创建的对象当做参数传递进去
5) 通过star()方法启动它

多线程实现的方式3:
1)自定义类中实现Callable接口,实现call()方法
2)创建线程池对象public static ExecutorService newFixedThreadPool(int nThreads)
参数是直接指定在当前线程池中有多少个线程
3)<T> Future<T> submit(Callable<T> task)
该返回值表示:异步计算的结果!
Threadpool.submit(new MyCallable()) 
4)Threadpool.shutdown() 
结束线程池
call()方法的返回值是和Callable中的泛型是一致的!

多线程的安全问题:
使用synchronized (同步锁对象)(同步锁)代码快
synchronized 代码块里必须跟一个if 判断语句
也可以使用 同步锁方法
public synchronized void show(){
代码.....
}
非静态的同步方法的同步锁对象是this
静态的是当前类名.class
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值