苏州Java培训
达内苏州java培训中心

0512-67873100

热门课程

Java多线程使用及常用方法

  • 时间:2016-02-23 13:25
  • 发布:苏州java培训
  • 来源:企业笔试题

线程就是程序中不同的执行路径。(这些执行路径可以“同时进行”)

两个线程看似是同时在执行,但是其实并不是这样的;

线程执行原理:

cpu把一度时间分成很多个时间片(这些时间片的时间很短很短,我们无法察觉),

他在一个时间片内只能执行一个进程,

然后换下一个时间片,执行下一个进程。

(这些不同进程在抢这些时间片执行,线程就这样交替的进行着,直到线程结束)。

线程使用

1.实现implements接口

public class TestThread {

public static void main(String[] args) {

Now now = new Now();

Thread threadNow = new Thread(now);

threadNow.start();

}

//测试 可以看出在抢时间片

for (int i = 0; i < 100; i++) {

System.out.println("main线程\t"+i);

}

}

class Now implements Runnable{

public synchronized void run() {

// TODO Auto-generated method stub

for (int i = 0; i < 100; i++) {

System.out.println("线程1\t"+i);

}

this.r1();

}

public synchronized void r1() {

System.out.println("线程1结束方法");

}

}

2.继承Thread类

public class ThreadTest {

public static void main(String[] args) {

Now1 now = new Now1();

ow.start();

// 测试 可以看出在抢时间片

for (int i = 0; i < 20; i++) {

System.out.println("\t测试");

}

}

}

class Now1 extends Thread{

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

for (int i = 0; i < 20; i++) {

System.out.println("ceshi");

}

}

}

注意:如果可以是使用implements的线程,不要使用extended的线程,

因为实现接口的方法还可以继续继承,但是继承过一次就不能在继承了。 『接口的灵活度好』

线程的常用方法:

对象 . start(); 表示该线程处于活动的,可以抢时间片的状态,而不是开始运行。

对象 . interrupt(); 表示将线程对象中断。如果该线程正处于sleep状态,会抛出异常(最好不用,不如让run方法完成执行)

对象 . stop(); 表示将线程直接终止。(已过时,不安全,如果有正在打开的资源无法关闭,而线程直接被关闭) 。

Thread.sleep(); 表示该语句写在那个线程中表示要将当前线程睡眠。

this.wait();方法如果在没有被锁定的(没有synchronized)的方法中,会报错!!『java.lang.IllegalMonitorStateException』;

苏州java培训:suz.java.tedu.cn

上一篇:Java求101~200之间的素数
下一篇:Java中replace()和replaceAll()区别

Java编程计算任意两个日期相距的天数

Java语言中定义常量注意事项解析

Java生成不规则验证码程序代码

Java读取操作Word,PDF,Excel的四种方法

选择城市和中心
贵州省

广西省

海南省