Java基础-多线程(1)

一.多线程的实现方案:

1.继承Thread类


2.实现Runnable接口 

二.线程的调度和优先级问题:

1.线程的调度

A:分时调度

B:抢占式调度(Java采用的就是这种);

2.获取和设置线程的优先级

获取对象的优先级:

 public final int getPriority();

 设置对象的优先级

public final void setPriority();

A:默认是5

B:范围是1-10;

三.线程的控制:

A:线程休眠:Thread.sleep(long  millis);

B:线程加入:public  final  void  join();  等待该线程终止再执行其他的.

C:线程礼让:public static void yield();暂停当前正在执行的线程对象,并执行其他线程.让多个线程的执行更和谐,但是不能保证一个线程执行一次.

D:守护线程:public final void setDaemon(boolean on);将该线程标记为守护线程或用户线程.当正在运行的线程都是守护线程的时候,Java虚拟机退出,该方法必须在启动线程前调用.

E:线程终止:stop():这个方法已经过时;现在用public void interrupt();中断线程,把线程状态终止,并且抛出一个InterruptedException.

四.出现线程安全问题的原因以及解决办法:

1.原因:

A:是否有多线程环境.

B:是否有共享数据.

C:是否有多条语句操作共享数据.

2.解决办法:

A:同步代码块

synchronized (同步锁对象) {

               需要被同步的代码;

}

这里的锁对象可以是任意对象.

B:同步方法:

            把同步关键字加在方法上.

a:非静态方法

             这里的锁对象是this.

b:静态方法:

这里的锁对象是类的字节码文件对象.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容