java 多线程

1,并发具有可论证的确定性,但是实际上具有不可确定性。
2,即便你很好的设计了并发程序,也有可能偶尔的出现问题。
3,使用并发必须自食其力,并且只有变得多疑而自信,才能用java编写出可靠的代码。
4,并发是用于多处理器编程的基本工具。

5,线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程
中可以运行很多线程。
线程总是属于某个进程,进程中的多个线程共享进程的内存。

6,“同时”执行是人的感觉,在线程之间实际上轮换执行。

7, 当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候
线程一般是由操作系统或者用户自己创建的

8,注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程
知道调用的方法名称(和签名)。
因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。

9,一旦线程启动,它就永远不能再重新启动。只有一个新的线程可以被启动,并且只能一次。一个可运行的线程或死线程可以被重新启动。
例如: thread1.start();
thread1.start();
报错:Exception in thread "main"
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:595)
at com.supan.class1.Test1.main(Test1.java:12)

10,线程总是有名字的,可以自己指定,自己不指定,系统指定。
在Thread类之中,可以通过getName()方法取得线程的名称,通过setName()方法设
置线程的名称。

线程的名称一般在启动线程前设置,但也允许为已经运行的线程设置名称。允许两个
Thread对象有相同的名字,但为了清晰,应该尽量避免这种情况的发生。

另外,如果程序并没有为线程指定名称,则系统会自动的为线程分配一个名称,
Thread thread1 = new Thread(new CreateThread1("陈超样"));
thread1.setName("chenchaoyang线程1");
Thread thread2 = new Thread(new CreateThread1("何胜男"));
thread2.setName("chenchaoyang线程2");
thread1.start();
thread1.start();

11、线程的调度是JVM的一部分,在一个CPU的机器上上,实际上一次只能运行一个线程。一
次只有一个线程栈执行。JVM线程调度程序决定实际运行哪个处于可运行状态的线程。
众多可运行线程中的某一个会被选中做为当前线程。可运行线程被选择运行的顺序是没有
保障的。

注意:

12、线程睡眠是帮助所有线程获得运行机会的最好方法。

线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间
线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行。

sleep()是静态方法,只能控制当前正在运行的线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值