发表于: 2017-11-17 22:31:16

1 603


今天完成的事情:

学习了多线程  创建 启动   状态 调度  常用方法  锁  同步 

java线程通过java.lang.Thread类 来实现 通过创建Thread的实例来创建新的线程

java线程的创建有两种方法

1 定义线程类实现 Runnable接口     推荐使用该方法 灵活

Thread t=new Thread(target) ;  //target为Runnable接口类型 

Runnable中只有一个方法  public void run();用以定义线程运行体

使用Runnable接口 可以为多个线程提供共享的数据

实现Runnable接口的类的run方法定义中可以使用Thread的静态方法 

public static Thread currentThread() 获取当前线程的引用

 class Runner1 implements Runnable{
public void run () {
for (int i=0;i<100;i++){
System.out.println("Runner:-------"+i);          }}}

2、可以定义一个Thread的子类并重写run方法    这个类本身就实现了Runnable接口

然后生成该类的对象

 class Runner1 extends Thread {
public void run(){
for(int i=0;i<100;i++){
System.out.println("Runner:---------"+i);   }

主函数  创建线程 两种方法 

public class Thread1 {
public static  void main (String args[]) {

Runner1 r = new Runner1();
   //    r.run();
       Thread t=new Thread(r);
       t.start();

       for (int i=0;i<100;i++){
System.out.println("Thread:---------"+i);
       }}

static class Runner1 implements Runnable{
public void run () {
for (int i=0;i<100;i++){
System.out.println("Runner:-------"+i);             }}}}
public class Thread2 {
public static void main(String args[]) {
Runner1 r=new Runner1();
      r.start();
       for (int i=0;i<100;i++){
System.out.println("Thread:---------"+i);
       }}

static class Runner1 extends Thread {
public void run(){
for(int i=0;i<100;i++){
System.out.println("Runner:---------"+i);
           }

sleep();Thread静态方法  是当前线程休眠(毫秒) 可以由类名直接调用 Thread.sleep();

public static void sleep(long millis) throws InterrupteException

public class TestWay {

public static void main(String[] args) {
MyThread myThread=new  MyThread();
       myThread.start();
       try{   myThread.sleep(10000);
       }catch (InterruptedException e){ }
//      myThread.interrupt();
       myThread.flag=false;
   }

static class  MyThread extends Thread {
private boolean flag=true;
       public void run() {
while (flag){ //true  死循环
               System.out.println("=="+new Date()+"==");

             try { sleep(1000);
               } catch (InterruptedException e) {
return;
               }}}}

join()方法 合并某个线程 

public class TestJoin {
public static void main(String[] args) {
MyThread2 t1=new MyThread2("aaa");
  t1.start();
  try{t1.join();
  }catch (InterruptedException e){ }
for (int i=0;i<10;i++){
System.out.println("i am in");
       }}}
class  MyThread2 extends Thread {
MyThread2(String s) {
super(s);       }

public void run() {
for (int i=0;i<10;i++){
System.out.println("i am:" + getName());}
             try {sleep(1000);
           } catch (InterruptedException e) {return;          }

yield()方法 让出cpu       yield n 产量  击穿  vt 屈服 投降生产 获利 不在反对 vi 退让 屈服 放弃

public class TestYield {
public static void main(String[] args) {
MyThread3 t1=new MyThread3("t1");
       MyThread3 t2=new MyThread3("t2");
       t1.start(); t2.start();        }

static class MyThread3 extends Thread{

MyThread3(String s) {
super(s);       }
public void run() {
for (int i=0;i<100;i++){
System.out.println( getName()+":"+i);
           if (i%10==0)
yield();                     }

线程的优先级

Thread.MIN_PRIORRITY=1  Thread.MAX_PRIORRITY=10

Thread.NORM_PRIORITY=5

使用下述方法获得或设置 线程的优先级

int gerPriority();   void setPriority(int newPriority);

t2.setPriority(Thread.NORM_PRIORITY+3);

明天计划的事情:拆分story 
遇到的问题:公司框架生成的server 运行失败 提示找不到路径 乱码 

把整个文件的路径改成英文 可以了 

公司框架 生成的测试类 第三行 测试失败 

发现 公司自动生成的是 client。xml  测试里面是

applicationContext-sca.xml"

把这个文件路径 改好 跑通

收获:线程 概念 “是一个程序里面不同的执行路径             一个cpu同一个时刻只能执行一个线程 

线程的几种状态   就绪 运行 阻塞 终止。。

start()用来执行线程 

r.run();是调用方法     r.start()是启动线程



psvm回车 快速 输入主函数 好久不用 复习一下 sout 回车 


返回列表 返回列表
评论

    分享到