1,

public class HelloRunnable implements Runnable
{

public void run()
{
System.out.println("Hello from a thread!");
}

public static void main(String args[])
{
(new Thread(new HelloRunnable())).start();
}
}

2,

public class HelloThread extends Thread
{


public void run()
{
System.out.println("Hello from a thread!");
}

public static void main(String args[])
{
(new HelloThread()).start();
}
}

3,

public class SleepMessages
{

public static void main(String args[]) throws InterruptedException
{

String importantInfo[] =
{
"Mares eat oats",
"Does eat oats",
"Little lambs eat ivy",
"A kid will eat ivy too"
};


for (int i = 0; i < importantInfo.length; i++)
{
//Pause for 4 seconds
Thread.sleep(4000);
//Print a message
System.out.println(importantInfo[i]);
}
}
}
4,

public class SimpleThreads
{

//Display a message, preceded by the name of the current thread

static void threadMessage(String message)
{
String threadName = Thread.currentThread().getName();
System.out.format("%s: %s%n", threadName, message);
}

private static class MessageLoop implements Runnable
{

public void run()
{

String importantInfo[] =
{
"Mares eat oats",
"Does eat oats",
"Little lambs eat ivy",
"A kid will eat ivy too"
};

try
{

for (int i = 0; i < importantInfo.length; i++)
{
//Pause for 4 seconds
Thread.sleep(4000);
//Print a message
threadMessage(importantInfo[i]);
}

} catch (InterruptedException e)
{
threadMessage("I wasn't done!");
}
}
}


public static void main(String args[]) throws InterruptedException
{
//Delay, in milliseconds before we interrupt MessageLoop
//thread (default one hour).
long patience = 1000 * 60 * 60;
//If command line argument present, gives patience in seconds.

if (args.length > 0)
{

try
{
patience = Long.parseLong(args[0]) * 1000;

} catch (NumberFormatException e)
{
System.err.println("Argument must be an integer.");
System.exit(1);
}
}
threadMessage("Starting MessageLoop thread");
long startTime = System.currentTimeMillis();
Thread t = new Thread(new MessageLoop());
t.start();
threadMessage("Waiting for MessageLoop thread to finish");
//loop until MessageLoop thread exits

while (t.isAlive())
{
threadMessage("Still waiting
");
//Wait maximum of 1 second for MessageLoop thread to
//finish.
t.join(1000);
if (((System.currentTimeMillis() - startTime) > patience) &&

t.isAlive())
{
threadMessage("Tired of waiting!");
t.interrupt();
//Shouldn't be long now -- wait indefinitely
t.join();
}
}
threadMessage("Finally!");
}
}

5,

public class SynchronizedCounter
{
private int c = 0;

public synchronized void increment()
{
c++;
}

public synchronized void decrement()
{
c--;
}

public synchronized int value()
{
return c;
}
}


public void addName(String name)
{

synchronized(this)
{
lastName = name;
nameCount++;
}
nameList.add(name);
}


public class MsLunch
{
private long c1 = 0;
private long c2 = 0;
private Object lock1 = new Object();
private Object lock2 = new Object();

public void inc1()
{

synchronized(lock1)
{
c1++;
}
}

public void inc2()
{

synchronized(lock2)
{
c2++;
}
}
}

6,

public class Deadlock
{

static class Friend
{
private final String name;

public Friend(String name)
{
this.name = name;
}

public String getName()
{
return this.name;
}

public synchronized void bow(Friend bower)
{
System.out.format("%s: %s has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}

public synchronized void bowBack(Friend bower)
{
System.out.format("%s: %s has bowed back to me!%n",
this.name, bower.getName());
}
}


public static void main(String[] args)
{
final Friend alphonse = new Friend("Alphonse");
final Friend gaston = new Friend("Gaston");

new Thread(new Runnable()
{

public void run()
{ alphonse.bow(gaston); }
}).start();

new Thread(new Runnable()
{

public void run()
{ gaston.bow(alphonse); }
}).start();
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述