}
{ }
//创建RunnableImpl类对象
RunnableImpl ri = new RunnableImpl();
//创建Thread类的对象,并把ri作为参数传递 Thread t1 = new Thread(ri); //给线程设置名字
t1.setName(\线程\//启动线程 t1.start();
//创建ThreadImpl类对象
ThreadImpl ti = new ThreadImpl(); ti.setName(\线程\//启动线程 ti.start();
//1、通过实现Runnable接口,重写run()方法 class RunnableImpl implements Runnable { @Override public void run() { }
}
System.out.println(Thread.currentThread() .getName()+\正在执行任务\
//2、通过继承THread类,重写run()方法。 class ThreadImpl extends Thread { @Override public void run() { System.out.println(getName()+\正在执行任务\ } }
///////////////////////////////////////////// \/*
题目: 定义一个类实现Runnable接口,卖票100张,四个线程,输出格式为“窗口1,还剩10张票” ,指定窗口3卖第10张票。 思路: 1、定义一个资源类实现Runnable接口 2、资源类重写run()方法,并加锁卖票
3、在测试类中创建线程并启动 */
class SellTicket { public static void main(String[] args) { //创建一个资源对象 Tickets ticket = new Tickets();
//创建线程对象并传入资源对象 Thread t1 = new Thread(ticket); Thread t2 = new Thread(ticket); Thread t3 = new Thread(ticket); Thread t4 = new Thread(ticket);
//设置线程名称 t1.setName(\窗口1\ t2.setName(\窗口2\ t3.setName(\窗口3\ t4.setName(\窗口4\ //启动线程 t1.start(); t2.start(); t3.start(); t4.start(); } }
class Tickets implements Runnable { private int ticket = 100; @Override public void run() { while(true) { //加锁 synchronized(this) { //剩余票数不大于0就退出循环 if(ticket > 0) { try { Thread.sleep(100); } catch (InterruptedException e)
{ e.printStackTrace(); } //让窗口3卖第十张票 if(ticket == 10) { if(!Thread.currentThread().getName().equals(\窗口3\ { continue; } } System.out.println(Thread.currentThread().getName()+\还( --ticket )+\张票\ } else { break; } } } } }
//////////////////////////////////////////////////////// \/*
剩\
写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法, 用for循环创建5个线程对象。需求如下:
① 利用线程类的构造函数输出:\创建线程4\。
(备注:当创建一个线程的时候,标记为1,再次创建一个线程的时候,标记为2, 所以输出的\创建线程4\就是创建的第四个线程) ② 在run方法中输出:“线程X :计数Y”,当执行次数达到6次的时候,退出。 (备注:其中“线程X”为第X个线程,“计数Y”为该线程的run方法执行了多少次) */
class SellTicket { public static void main(String[] args) { //用for循环创建5个线程对象 for(int i = 1; i <= 5 ;i ++) { new Thread(new MyThread (i) ).start(); } } }
class MyThread implements Runnable { private int count; public MyThread(){} public MyThread(int count) { this.count = count;
System.out.println(\创建线程\ } @Override public void run() { for(int i = 1 ; i <=6; i++) { System.out.println(\线程\计数\ } } }
/////////////////////////////////////////////////////////// \/*
题目: 编写一个Java程序实现多线程,在线程中输出多线程名字,隔300毫秒输出一次, 共输出20次。 思路: 1、用实现Runnable接口并重写run方法 2、创建线程 */
class Test { public static void main(String[] args) { //创建线程对象 Thread t1 = new Thread(new MyThread () ); Thread t2 = new Thread(new MyThread () ); //设置线程名称 t1.setName(\我是线程1\ t2.setName(\我是线程2\ //启动线程 t1.start(); t2.start(); } }
//实现Runnable接口
class MyThread implements Runnable { @Override public void run() { //循环20次 for(int i = 1 ; i <=20; i++) { try { //休眠300毫秒 Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); }
//打印线程名称 System.out.println(\线程名称:\ } } }
///////////////////////////////////////////////////////////////////// \/*
题目: 输出一个字符串,怎样判断是否是aba,abcba,abffba,的字符串 思路: 1、首先判断是奇数个还是偶数个(字符串的长度%2,1为基数,0为偶数) 2、是0就是偶数个 //得到前半部分子字符串 字符串.substring(0,字符串的长度/2 ) //得到前后半部分子字符串 字符串.substring(字符串的长度/2 ,字符串的长度 ) 字符串.toCharArray()分别得到两个字符数组 在循环字符数组 一个正序一个倒序的 用对比字符是否equals 3、是1就是奇数个 //得到前半部分子字符串 字符串.substring(0,字符串的长度/2 ) //得到前后半部分子字符串 字符串.substring(字符串的长度/2+1 ,字符串的长度 ) 字符串.toCharArray()分别得到两个字符数组